我是靠谱客的博主 爱听歌往事,最近开发中收集的这篇文章主要介绍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

最后

以上就是爱听歌往事为你收集整理的screen / nohup 实现后台运行程序的全部内容,希望文章能够帮你解决screen / nohup 实现后台运行程序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部