screen / nohup 实现后台运行程序

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。screen / nohup 实现后台运行程序,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

通常我们在运行程序时,会通过终端登录服务器,然后使用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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/162752.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!