纠正错误 添加实例

nohup

将程序以忽略挂起信号的方式运行起来

补充说明

nohup命令 可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

nohup和&的区别

在Linux中,信号是进程间通讯的一种方式,它采用的是异步机制。当信号发送到某个进程中时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成后再回到中断的地方继续执行。

涉及程序后台运行的部分信号列表如下:

信号 编号 解释 说明
SIGHUP 1 挂起 终端控制进程结束(终端连接断开)
SIGINT 2 中断 用户发送INTR字符(Ctrl+C)触发
SIGQUIT 3 退出 用户发送QUIT字符(Ctrl+/)触发

使用nohup执行程序

使用&执行程序

要让进程真正不受 Shell 中 Ctrl+C 和 Shell 关闭的影响,用法如下,默认会输出到当前目录的 nohup.out 文件

nohup command &

命令语法

 nohup Command [ Arg … ] [ & ]

选项

--help:在线帮助;
--version:显示版本信息。

示例

nohup使用

使用nohup命令提交作业,如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中

$ nohup vmstat 2 10
nohup: ignoring input and appending output to ‘nohup.out’

上面命令会在同一个目录下生成一个名称为 nohup.out 的文件,其中包含了正在运行的程序的输出内容,并且不受 Shell 关闭的影响。

nohup和&使用

$ nohup vmstat 2 10 &
[1] 19341
$ nohup: ignoring input and appending output to ‘nohup.out’

上面命令会在同一个目录下生成一个名称为 nohup.out 的文件,其中包含了正在运行的程序的输出内容,并且不受 Ctrl+C 和 Shell 关闭的影响。

nohup和&使用,重定向文件

nohup command > myout.file 2>&1 &

在上面的例子中,输出被重定向到 myout.file 文件中。