关于Linux的nohup、重定向、前后台运行

起因:ssh链接Linux跑神经网络的程序,然后吃个饭回来连接就断了。。。

刚开始考虑放在后台跑,但是其实没用,终端关掉之后整个进程组的进程都会被杀死。包括前台后台,可以用nohup这个命令让它还在这个进程组当中,但是不会受到SIGHUP信号的影响,当该终端关闭时不会被杀死,但是当打开另一个终端时用jobs也看不到,因为jobs返回的是该终端进程控制的进程组,要用ps命令才能看到。还有其它命令也可以解决这个问题,具体可以参考这篇文章:ssh连接linux服务器中断后,如何让命令继续在服务器运行。

nohup的常用情形如下:

nohup command >/dev/null 2>&1 &

什么意思呢?

>/dev/null 2>&1代表输出重定向,既然意识到该终端可能会被关闭,那么肯定就不能输出到终端,所以默认会输出到当前文件夹下的nohup.out文件中,如果有多个进程,就会冲突,所以最好还是指定重定向的输出文件,对这个命令的具体理解可以参考这篇文章:shell中>/dev/null 2>&。

最后一个&代表将该进程放到后台,如果想要重新放到前台来,只需要用fg命令即可。关于前后台切换的操作可以参考这篇文章:linux fg&bg。

你可能感兴趣的:(计算机系统,linux)