screen常用命令

1. 背景

由于经常使用ssh登录实验室的服务器训练神经网络, 而一些复杂的神经网络模型需要长时间训练,在此期间,如果出现网络等原因出现链接中断的话,服务器的进程也会被杀死,之前的一切半途而废。利用screen可以很好地解决这一问题。

2. 安装

CentOS系统可以执行:yum install screen 

Debian/Ubuntu系统执行:apt-get install screen 

3. 使用

screen -S [NAME]

例如:

screen -S gan-pytorch

随后进入screen窗口gan-pytorch, 在这个窗口里执行的程序都将是screen里的程序。

1. 挂起:Ctrl+a+d(先按住Ctrl和a,在按d)

挂起即暂时离开screen,也就是说,之后即便你的电脑与服务器中断链接也不影响进程的运行。

那么我们怎样恢复screen呢?

2. 恢复:screen -r [ID]

ID指的是进程的ID,每个进程都有唯一的ID, 查看ID的方法如下:

3. 查看:screen -ls

图中的27064、26962就是进程的ID

4. 杀死:screen -X -S [ID] quit

5. 批量杀死:

如果你的系统里有多个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 的参数执行

4. 不保存文件,直接在screen翻页

[Ctrl] + [A],再按[ESC],进入复制模式,默认翻页快捷键是[Ctrl]+[F],[Ctrl]+[B].

退出复制模式:按[ESC].

5. 使用screen恢复会话时出现There is no screen to be resumed matching错误解决办法

有时在恢复 screen 时会出现 There is no screen to be resumed matching ****,遇到这种情况咋办呢?输入命令

screen -d ****

然后再使用恢复命令恢复就 ok 了。

6. 更新......

此文也许会不定期更新,如果需要用的新的screen命令的话......

 

posted @ 2017-10-26 17:35  congyucn  阅读(1117)  评论(0编辑  收藏  举报