在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要在后台运行一个aaa.sh的脚本:

[root @CC02 /]# ./aaa.sh &                                                              

       可是当我们注销或者屏保后,这个脚本就会自动停止,这时我们就需要nohup命令,怎样使用nohup命令呢?请看:

[root@mail01 script]# nohup ./aaa.sh &
[2] 10141
[root@mail01 script]# nohup: ignoring input and appending output to `nohup.out'
[2]+  Done                    nohup ./aaa.sh

[root@mail01 script]#

 

注意:只有当虚拟终端是 $ 或者 # 时候(如下图所示),才可关闭此终端,否则可能导致已经启动的进程被关闭(如果程序持续输出信息而没有出现 $ 或 #,按一下enter即可

原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

[root@mail01 script]# ll                                                                                          
total 12424                                                                                                              
-rwx------. 1 root root            30 Mar 29 15:36 aaa.sh                                               
-rw-------. 1 root root 12707156 Mar 29 15:41 nohup.out                                        
           

 

附:nohup命令参考

nohup 命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。

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

退出状态:该命令返回下列出口值:

126 可以查找但不能调用 Command 参数指定的命令。

127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

nohup命令及其输出文件

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

该命令的一般形式为:[root @apps /]# nohup command &

 

使用nohup命令提交作业

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

nohup command > myout.file 2>&1 &

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

使用 jobs 查看任务。

使用 fg %n 关闭。