发布日期:2015-08-27 11:37:52

写了个小程序,需要在远端的linux环境下执行4~5天。如果直接运行的话,关闭终端后,程序也就关闭了。所以如果需要程序始终在后台执行,即使关闭当前的终端程序也继续执行(&做不到这一点),这时候需要nohup (no hang up 不挂起)。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

原因:

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

nohup 命令

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

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

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

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

最后:

更多的Linux相关技巧:

让进程在后台可靠运行的几种方法

linux后台运行和关闭、查看后台任务

 

发表评论