连接远程服务器运行程序时,正常运行程序或 command &
后台运行,当退出远程登录后,程序都会停止。
可以使用nohup命令,这样当退出远程登录后,程序会继续运行。
操作系统中有三个常用的流:
0:标准输入流 stdin
1:标准输出流 stdout
2:标准错误流 stderr
一般当我们用 > console.txt,实际是 1>console.txt的省略用法;< console.txt ,实际是 0 < console.txt的省略用法。
比如这里把程序运行的 stdout 打印到 stdout.txt,stderr 打印到 stderr.txt:
nohup command > stdout.txt 2> stderr.txt
比想把stdout和stderr输入到output.txt文件中,并后台运行:
nohup command > output.txt 2>&1 &
这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件 output.txt 里面,所以结果是标准错误和标准输出都导入文件 output.txt 里面了。 至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,从而导致错误。