[笔记]screen和nohup的安装与使用

一、nohup 的安装和使用
1、安装 nohup

一般来说 nohup 系统都会自带,如果系统没有,需要进行安装:

debian/Ubuntu

apt-get install -y nohup

CentOS

yum install -y nohup

2、使用 nohup

列如想后台运行一个 python 程序 test.py,那么命令如下:

nohup python test.py &

注意别漏了 & 这个符号。&代表一直在后台运行

查看所有后台任务:

jobs

返回到对应的任务:

fg %2020  #

其中 2020 是编号

二、screen 的安装和使用

1、安装 screen

Ubuntu / Debian:

apt-get install -y screen

CentOS:

yum -y install screen

2、使用 screen

新建 screen 任务:

screen -S test    #test为任务名

查看所有运行中的screen任务:

screen -ls

返回某个screen任务:

screen -r test   #test是任务名称,也可以输入对应的 ID

三、两者对比
1、使用 nohup command & 方式时,如果 ssh 突然断开了,那么再登陆到系统的时候,执行 jobs 就不会发现刚才的 job 的编号了。但是 command 会继续执行,直到完成脚本的内容。

2、使用 screen 方式执行脚本,然后按键 Ctrl+a+d 暂时断开后,即使 ssh 会话断了,使用 screen -r 也是能恢复到之前的会话中的。当然脚本内容也会直到执行完成。

四、使用过程中问题描述与分析

之前介绍过,在进行耗时操作时,我们可以用 screen -S 命令开启一个新的窗口,例如 screen -S test,之后如果因为意外断线导致连接中断时,我们只需要重新 SSH 到服务器,使用 screen -r test 恢复窗口即可。这里的 test 是窗口的名字。

今天博主在使用 screen -r 恢复会话时,出现了这个错误,错误提示:

There is a screen on:
    2876.test (Attached)
There is no screen to be resumed matching test.

根据错误的提示,test 这个窗口确实是存在的,但是处于被占用的状态(attached),这种情况可能是因为其它人正使用这个会话,或者之前因为 SSH 超时等原因导致会话未正常退出,所以无法再次进入。

问题解决:
解决办法也很简单,我们需要使用 -d 来把这个 screen 窗口给 detach 掉就行,例如我这里的命令需要改成:

screen -r -d 2876

其中 2876 是使用 screen -r 提示的窗口编号。这样就能正常恢复这个窗口了。

© 版权声明
THE END
喜欢就支持一下吧
点赞16 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情图片

    暂无评论内容