本文共 1494 字,大约阅读时间需要 4 分钟。
安装:
apt install screen
常用的screen命令:
1、screen -S name 创建 名为name的 screen
2、screen -a 然后 d 暂时离开此screen 后台继续运行
3、screen -ls 列出所有screen 进程 pid 与名称
4、screen -r + pid(或者名称)回到screen(attached状态),如果就一个screen进程,可以省略 pid
使用:
创建screen后 进入该screen任务,然后运行程序,可以退出到shell 干其他事了,
最主要的功能是screen不会因为断网或者关闭ssh而结束了之前运行的程序
Linux中的screen命令是一个很有用的工具,它的功能挺强大,能够在一个终端连接断开以后仍然能够保持任务的运行。
举个例子来说,我们通过ssh远程登录到linux服务器上执行某个任务,
这个任务需要很长的时间才能执行完成,比如需要5个小时,而这时你碰巧要下班了,不能等程序执行完成再走,
也不能不关电脑就走。
这种场景下,screen就可以派上用场了。
关于screen的用法,网上有很多文章,这里简单说一下:
1、screen -ls 列出当前系统中运行的session
下面说明,我的系统中有三个session正在运行。
[ ~]# screen -ls
There are screens on:
29486.edm__10000 (Detached)
29910.edm__20000 (Detached)
29562.edm_30000(Detached)
2、结束一个session
有两种方法
一种是,通过screen -r pid 或者 screen -r name先进入该session中,然后exit即可
一种是,通过screen -S edm_10000 -X quit命令,不进入该session中,直接退出
当然也可以直接 kill pid的方式结束一个session,
killall screen 结束所有的session会话
3、结束多个session
如果你的系统里有多个session同时在运行,有没有办法全部退出呢?
当然,你可以一个一个的session退出,只是麻烦了一点。
我们也可以通过组合命令,一次全部退出
screen -ls | grep -i detached | cut -d. -f1 | tr -d [:blank:]| xargs kill
screen -ls | grep Detached | cut -d. -f1 | awk ‘{print $1}’ | xargs kill
如果您的pid都是五位数的话
screen -ls | grep -o "[0-9]\{5\}" | xargs kill
这两行命令的意思都差不多,通过管道,找到每个session的pid,然后作为 kill的参数,直接杀掉该进程
screen -ls : 列出所有的screen session
grep Detached : 过滤出Detached的session
cut -d. -f1 :用.分割,取第一部分,也就是 pid
awk和tr都是去掉前面的空白符的
xargs :就是把每一行作为 kill 的参数执行
转载地址:http://nrimi.baihongyu.com/