本文已参与「新人创作礼」活动,一起开启掘金创作之路。
nohup
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的nohup.out
文件不可写,输出重定向到 $HOME/nohup.out 文件中。
语法格式: nohup 要执行的命令 如:nohup python main.py
作用: 关闭 标准输入(控制台无法输入),标准输出 和 错误信息 保存到 nohup.out 文件里面,关闭客户端后命令仍然会运行。
&
语法格式: 要执行的命令 & 如:python main.py &
作用: 不会关闭标准输入(控制台可以输入),打印日志仍然在终端,但会丢失 标准输出 和 错误信息,关闭客户端后命令会就马上停止。
nohup 和 &
所以推荐 nohup 和 & 的结合使用!!! ,既可以在后台运行,终端还可以正常输入,也不会有日志打印,而且还可以随意关闭xshell或mobaXterm终端。
语法格式: nohup python main.py &。这时,main.py目录下会生成一个nohup.out文件,存储了标准输出和错误信息。
重定向
nohup python train.py > train.log 2>&1 &
作用: 这个命令可以将 python train.py 的 打印输出 重定向到和 train.py同目录下的 train.log (写成train.txt 也可以)文件中。同时程序在后台运行,终端不会打印,可以正常输入,且可以关闭终端。
file 表示将 标准输出 输出到 file文件;
1)> train.log 解释 :
将 python train.py运行的日志 重定向 写入到 train.log文件中,即输出内容 不打印到屏幕上,而是输出到 train.log文件中。
2)2>&1 解释:
将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到train.log 文件中。
0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)
3)> train.log 2>&1 解释:
将 标准错误 重定向到 标准输出,标准输出 再重定向到 train.log 中,即标准错误和标准输出都记录在了train.log。