![]()
模板就是这个样子
无论是运行python,pytorch,还是执行脚本文件,都可以这样让它后台运行
nohup
no hang up 的缩写,就是不挂断的意思
nohup python -u lian.py > lian.txt 2>&1 &
Run COMMAND, ignoring hangup signals.:运行命令,忽略挂起信号
就是不挂断的运行,注意没有后台运行功能。就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行
&
是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出
nohup和&
一般在执行shell命令的时候我们在命令的后面加上一个 ‘&’ ,这样就可以使得该程序在后台运行,但是当程序运行起来之后依旧会再次在shell中输出打印信息,shell依旧被占用,关闭shell则程序退出;这个时候我们可以使用 ctrl+z 命令,使得这个信息消失,可以做别的事情,但是关闭shell的时候程序依旧会退出,因此这些办法都不能解决问题。
因此我们需要使用nohup命令来解决问题。
那么,我们可以巧妙的吧他们结合起来用就是
nohup COMMAND &-u
代表程序不启用缓存,也就是把输出直接放到log中,没这个参数的话,log文件的生成会有延迟
> lian.txt
将输出日志保存到这个文件中
2>1
2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
2>&1
换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.
*命令运行后会有提示,示例:
[1] 2880代表进程2880中运行。
用jobs -l查看当前后台运行的程序
![]()
前面的[1] 是jobnum
通过ps -aux 查看任务相应进程
例如我们执行的是 nohup ./tools/dist_train.sh configs/textrecog/crnn/crnn_academic_dataset.py work_dirs/CRNN 4 > CRNN.log 2>&1 &
那我们可以用
ps -aux | grep dist_train.sh #或者是其他好辨识的名称
来查看进程
![]()
a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分
可以看到job -l 和 ps -aux都可以查看该任务进程的PID
通过kill结束后台任务
kill + PID
kill 38596
就和在前台执行我们ctrl+c一样
当前正在前台执行的命令的暂停与恢复
让前台执行的命令暂停
ctrl + z
此时当前执行的命令会暂停并放到后台,我们可以去做一些别的操作
![]()
然后想要恢复的话
fg 1
![]()
文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890
Python Free
邮箱:417803890@qq.com
QQ:417803890
皖ICP备19001818号-4
© 2019 copyright www.pythonf.cn - All rights reserved
微信扫一扫关注公众号:
Python Free