Linux技巧 – 使用 screen 管理你的远程会话

Linux技巧 – 使用 screen 管理你的远程会话

遇到的困扰

  1. 很多人可能遇到过这种情况,正在编译安装软件,但由于编译需要较长时间,可能已经下班了,你想回家再弄,又不行,因为你电脑关机后就编译就断了,会导致之前的编译前功尽弃。
  2. 又或者你正在从一台机scp拷文件到另一台机,在做系统备份等等,都会遇到要等它拷完才敢断开的问题。

非screen后台运行的方式

对于一些后台进程,我们可以使用nohup来解决无法后台运行的问题,比如我之前运行anki-server就是用nohup:

nohup python36 -m ankisyncd >> /var/log/ankisyncd.log 2>&1 &

或者用supervisor去管理这些进程也可以。

但是对于复杂人机交互任务(上面提到的两个困扰),使用nohup、supervisor都是无法解决的,这时就要用到screen,使用screen后,关掉终端、睡眠、断网、关机都不会中断你的会话。

安装screen:

yum -y install screen

使用screen

用法一: 在终端直接执行screen然后回车即可进入sceen虚拟终端(这叫创建了一个会话),在里面随意做操作,直接关闭终端软件的窗口,再重新进入,原来的界面还在,没有中断:
screen-demo1.gif

用法二: screen后直接跟着命令:
screen-demo2.gif

用法三:用法一直接输入screen创建会话,会话名字是“会话编号.终端窗口编号.当前主机名称”,比如“3388.ttys004.Bruce’s MBP”,而如果你想自己命名创建的会话(毕竟这样能看出这个会话是在做什么操作),可用screen -S 会话名称(S:Session,会话)来创建命名的会话,会话名称是可以用中文的,除了自定义会话名称创建会话之外,其他操作与用法一相同。

不管是哪种用法,就是在screen窗口里面执行命令后,不要ctrl+c关闭,不要exit,而是直接关闭终端软件(或者断网、关机、睡眠),然后要重新进入,要先查找会话id:

screen -ls
There is a screen on:
    7497.pts-2.centos-linux1    (Detached)
1 Socket in /var/run/screen/S-xiebruce.

查找到会话id后,即可进入对应的会话:

screen -r 7497.pts-2.centos-linux1

只用前面的数字7497也可以,事实上它是模糊匹配名称的(这意味着你只用名称的中间一部分也是可以的,只要它是唯一的就行)。

要从screen会话窗口中退出,也是使用exit即可,中断任务也是用ctrl+c

其他用法参见:linux 技巧:使用 screen 管理你的远程会话

打赏

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
Notify of

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

Linux技巧 – 使用 screen 管理你的远程会话