您的位置首页百科知识

解决Linux关闭终端(SSH)后程序自动停止的问题

解决Linux关闭终端(SSH)后程序自动停止的问题

的有关信息介绍如下:

解决Linux关闭终端(SSH)后程序自动停止的问题

如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。

nohup命令及其输出

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。

该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

nohup表示不挂起的意思。

一般都是在linux下nohup格式:

nohup command

或者

nohup command &

这之间的差别是带&的命令行,即使terminal(终端)关闭程序依然运行(前提是你把程序递交到服务器上);

它把标准输出(STDOUT)和标准错误(STDERR)结果输出到nohup.txt文件。

nohup命令说明:

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

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

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

举例1:

比如你有一个shell脚本,test.sh;

nohup test.sh &

在shell中回车后提示:

[~]$ appending output to nohup.out

原程序的的标准输出被自动改向到当前目录下的nohup.out文件

举例2:

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

nohup command > output 2>&1 &

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

主要是中间的 2>&1的意思:

这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,所以结果是标准错误和标准输出都导入文件output里面了。

至于为什么需要将标准错误重定向到标准输出的原因,主要因为标准错误没有缓冲区,而stdout有。