## 功能
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思(no hang up)。
### 格式
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 command > myout.file 2>&1 &
在上面的例子中,输出被重定向到当前目录的`myout.file`文件中。
### 示例
butbueatiful ~ $
echo "while sleep 10; do date; done" > nohup_test.sh
butbueatiful ~ $
nohup sh nohup_test.sh &
[1] 4072
nohup: ignoring input and appending output to `nohup.out'
butbueatiful ~ $
exit
重启一个终端查看结果
butbueatiful ~ $
tail -f -n 100 nohup.out
Fri Aug 23 05:55:32 CST 2013
Fri Aug 23 05:55:42 CST 2013
Fri Aug 23 05:55:52 CST 2013
Fri Aug 23 05:56:02 CST 2013
Fri Aug 23 05:56:12 CST 2013
Fri Aug 23 05:56:22 CST 2013
^C
butbueatiful ~ $
ps aux |grep nohup_test.sh |grep -v grep # 查看该进程的 `PID`
500 4347 0.2 0.2 5064 1172 ? S 05:55 0:00 sh nohup_test.sh
butbueatiful ~ $
sudo kill -9 4347 # 杀掉该进程
[sudo] password for butbueatiful:
butbueatiful ~ $
阅读(3404) | 评论(0) | 转发(3) |