Linux技巧 – 使用 screen 管理你的远程会话
Table of Contents
遇到的困扰
- 很多人可能遇到过这种情况,正在编译安装软件,但由于编译需要较长时间,可能已经下班了,你想回家再弄,又不行,因为你电脑关机后就编译就断了,会导致之前的编译前功尽弃。
- 又或者你正在从一台机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后直接跟着命令:
用法三:用法一直接输入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 管理你的远程会话
觉得文章对你有用的话鼓励一下我吧