nohup命令详解

简介: nohup命令详解

一、背景说明:

启动服务的时候,如果使用如下命令,则会在start.sh脚本所在的目录下,产生一个名为 nohup.out 的输出文件

nohup ./startup.sh &

可以看到下面这个例子,一开始当前目录是没有nohup.out文件的,经过这行命令之后就可以查看到当前脚本输出的信息在nohup.out文件里了。

如果不想要这个多余的 nohup.out 文件,可以使用如下命令解决:

nohup  ./startup.sh  >/dev/null  2>&1  &

二、命令解析:

1、nohup和尾部 &

1)nohup 是no hangup,不要挂断,永久运行。关闭终端,当前运行的进程不终止,标准输出内容会输出到当前目录的 nohup.out 日志文件中而不显示在终端。

2)命令最后一个 &,表示后台运行的意思,和 nohup 配置表示不挂断后台运行。

2、>/dev/null 和 2>&1

1)/dev/null 是 Linux 一个空设备文件,通常也被称为位桶(bit bucket)或黑洞,这个文件接收到任何数据都会被丢弃,也就是不输出任何信息到终端。

2)> 代表重定向到哪里;重定向的符号有两个:> 或 >>,> 会先清空文件,然后再写入内容,>> 会将重定向的内容追加到现有文件的尾部

3)Linux系统预留了三个文件描述符:0、1 和 2,他们的意义如下所示:

①0:标准输入流 stdin

②1:标准输出流 stdout,默认值是1

③2:标准错误流 stderr

4)“>/dev/null” 等价于 “1>/dev/null”,表示标准输出(1)输出到 /dev/null 中,即终端不输出标准输出信息;

2>&1” 中的 “&” 是等价于的意思,表示标准错误(2)输出的位置等价于标准输出(1)的位置,即等价于 “2>/dev/null”, 即终端不输出标准错误信息。

因此,“>/dev/null 2>&1” 表示 标准错误信息和标准输出信息,在终端上均不输出。

三、指定输出文件:

如果想要将服务启动和运行过程中的日志信息输出到指定位置(比如:/var/log/start.log),可以参考如下命令:

nohup ./startup.sh >/var/log/start.log 2>&1 &

或者

nohup sh startup.sh >/var/log/start.log 2>&1 &

四、sh xxx.sh与./xxx.sh区别:

sh xxx.sh是用sh执行startup.sh,startup.sh可以没有执行标志,可以不用加./,可以不用在脚本第一行写上#!/bin/sh。

./startup.sh是调用脚本第一行制定的shell去解释执行,缺省为sh,就是bash。


相关文章
已解决 BrokenPipeError: [Errno 32] Broken pipe
已解决 BrokenPipeError: [Errno 32] Broken pipe
9911 156
已解决 BrokenPipeError: [Errno 32] Broken pipe
|
监控 Java 应用服务中间件
达梦数据库DEM监控部署教程分享
达梦数据库DEM监控部署教程分享
1490 2
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
3311 2
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
域名解析 网络协议 数据安全/隐私保护
docker search 超时
docker search超时问题
2444 14
docker search 超时
|
网络协议 Linux
搭建FTP报错:Job for vsftpd.service failed because the control process exited with error code. See
搭建FTP报错:Job for vsftpd.service failed because the control process exited with error code. See
1291 3
|
Java Spring
Spring的AOP组件详解
该文章主要介绍了Spring AOP(面向切面编程)组件的实现原理,包括Spring AOP的基础概念、动态代理模式、AOP组件的实现以及Spring选择JDK动态代理或CGLIB动态代理的依据。
Spring的AOP组件详解
|
移动开发 前端开发
基于jeecg-boot的flowable流程自定义业务退回撤回或驳回到发起人后的再次流程提交
基于jeecg-boot的flowable流程自定义业务退回撤回或驳回到发起人后的再次流程提交
1304 0
|
运维 监控 安全
CentOS 7系统 OpenSSH和OpenSSL版本升级指南
本文详细介绍如何在CentOS 7系统上升级OpenSSH和OpenSSL至最新稳定版本(OpenSSH 9.6p1和OpenSSL 1.1.1w),解决多个已知安全漏洞(如CVE-2023-51767等)。涵盖环境说明、现存漏洞、升级准备、具体步骤及故障排查,确保服务器安全。建议先在测试环境验证,再应用于生产环境。
5407 7
|
监控 数据挖掘 大数据
Linux中的nohup命令:让你的任务在后台持久运行
**Linux的`nohup`命令让任务在后台持续运行,即使终端关闭。它创建不受终端影响的新进程,常用于长时间任务,如数据处理。`nohup`将输出重定向至`nohup.out`,可使用`-p`选项避免此行为。示例:`nohup ./script.sh > output.log 2>&1 &`。记得检查输出、重定向、记录命令、监控任务并使用日志管理工具。**
|
SQL Oracle 关系型数据库
Oracle rman备份保留策略,归档删除策略及delete命令的使用
oracle rman备份保留策略、归档策略的使用及对delete命令的影响
2846 0