一、nohup
1 | nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 |
语法格式: nohup 要执行的命令
如:nohup python main.py
作用: 关闭标准输入(控制台无法输入),标准输出和错误信息保存到 nohup.out
文件里面,关闭客户端后命令仍然会运行。
二、&
语法格式: 要执行的命令 &
如:python main.py &
作用: 不会关闭标准输入(控制台可以输入),打印日志仍然在终端,但会丢失 标准输出 和 错误信息,关闭客户端后命令会就马上停止。
三、nohup 和 &
所以推荐 nohup 和 & 的结合使用!!!,既可以在后台运行,终端还可以正常输入,也不会有日志打印,而且还可以随意关闭客户端。
语法格式: 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
文件中。
1 | 0 – stdin (standard input,标准输入) |
3)> train.log 2>&1
解释:
将 标准错误 重定向到 标准输出,标准输出 再重定向到 train.log
中,即标准错误和标准输出都记录在了train.log
。