screen / nohup 实现后台运行程序

通常我们在运行程序时,会通过终端登录服务器,然后使用shell命令运行程序。这种方式对于运行时长较短的程序没问题,但是对于深度学习中训练网络等耗时较长的程序来说很容易出问题。例如一旦机器死机、断网、不小心关闭终端等种种情况都会导致程序终止运行。又要悲剧地重新开始,简直是欲哭无泪……

那么我们希望关闭终端会话,程序依然继续运行的话,可以选择以下两种方式:

  1. nohup使shell命令脱离终端运行;“&”让命令在后台运行。
  2. 可以使用screen这个工具,实现让程序在后台运行。

1. nohup

nohup后台运行程序
nohup python -u main.py > out.log 2>&1 &
  • nohup:不间断地运行,是no hang up的缩写。
  • -u:python不启用缓冲,out.log中及时显示输出
  • > out.log:输出内容写入nohup.out中
  • &:后台运行
  • 2>&1:将错误和标准都输出到my.log
    0 表示stdin标准输入,用户键盘输入的内容
    1 表示stdout标准输出,输出到显示屏的内容
    2 表示stderr标准错误,报错内容

参考博文:https://blog.csdn.net/weixin_42840933/article/details/85780125

查看运行日志

tail -f 命令可以动态的显示程序的最新的运行情况,

tail -f out.log

停止查看:CTRIL + C

结束后端程序

使用nohup命令的时候,窗口会显示一个进程号PID。想要在服务器的后端结束这个程序,我们只需要用kill-9 杀死这个进程即可。

kill -9 PID

如果关闭了会话,如何找到该进程的PID呢?

ps -ef|grep python

找到 python -u main.py 对应的进程PID即可。 可以看到此处,我们的PID即为 28570 。
在这里插入图片描述
此处可以参考我的另外一篇博客:Ubuntu强制终止程序

2. Screen

Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。

安装screen

以ubuntu下安装screen为例

sudo apt install screen 
创建会话

创建名为 scr_nam 的会话

screen -S scr_name   

会话创建成功后即可在该会话下登录服务器,运行程序。

打开会话

打开会话,screen状态变为(Attached)。

screen -r scr_name
查看会话

查看所有screen会话

screen -ls 
删除会话

(1) 退出screen(直接退出,并删除会话)

exit

(2) 删除状态为detached的会话

screen -X -S src_name quit
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值