背景:最近在跑一个深度学习的程序,需要跑好几天。需要解决以下两个问题
- shell断开连接了程序也会一并结束;
- 程序运行会一直输出,能否实现“最小化”,以及从“最小化”恢复到前台继续输出结果。
为了解决这个问题,查阅了一下解决的方法。
针对第一个问题,可以使用nohup(not hang up)命令来解决。
$nohup python test.py
针对第二个问题,可以使用后台运行符号&,将进程转入后台运行
nohup python test.py & 在后台运行test.py
jobs 查看后台运行的进程
fg %n 让后台进程n转到前台
bg %n 让暂停运行的后台进程n继续运行
kill %n 杀死job
ctrl+z 使前台正在运行的进程转到后台
ctrl+c 终止前台进程
具体用法
nohup python -u test.py > test.log 2>&1 &
# 2 输出错误信息到提示符窗口
# 1 表示输出信息到提示符窗口, 1前面的&注意添加, 否则还会创建一个名为1的文件
# 最后会把日志文件输出到test.log文件
其中-u 的作用是无缓存输出,即每有一行输出都直接写到test.log里面
在运行过程中使用一下命令可以查看输出
tail -f test.log # 实时输出
cat test.log # 全部输出