screen这个工具,不是很常用,但是在你做一些耗时的操作时,就非常有用了,之前用两天,过一阵就又忘了,再用还是要百度它的用法。想想还是自己总结下文档吧!
我们经常需要SSH远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。此时,screen命令就出现了。
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。
安装screen
$ yum -y install screen
screen指令常用选项
创建新会话
$ screen -R session_name # 其中session_name是你定义的会话名称
$ screen -S session_name
退出当前会话
如果只是退出当前会话,但会话中的指令还在运行,稍后你还要回到这个会话的话,那么需要按Ctrl+a+d,如果这个会话没用了,退出就不会再进来了,那直接Ctrl+d或exit退出即可。
查看当前主机上创建的所有screen会话
$ screen -ls
There is a screen on:
7367.zujian (Attached)
1 Socket in /var/run/screen/S-root.
进入之前的会话
$ screen -r session_name/pid # session_name和pid都可以通过screen -ls查出来
网络断开后再次进入会话
有时候我们网络异常断开了,如果之前的会话没有退出,那么再次登录就会报错如下:
$ screen -r session_name
There is a screen on:
7457.zujian (Attached)
There is no screen to be resumed matching session_name.
此时,需要先执行-d选项,远程detach某个session,如下:
$ screen -d session_name
$ screen -r session_name # 重新进入你的screen窗口