1. screen 简介
当我们在使用putty进行远程访问服务器时,进行远程访问的界面往往不能关掉,否则,程序将不再运行。而且,程序在运行的过程中,还必须时刻保证网络的通常,这些条件都很难得到满足。
为了解决上述问题,可以使用Linux下的screen命令,即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。下面介绍一些常用的screen命令。
具体使用如下:
我们可以使用screen -S u-net
创建一个叫做u-net
的session,这时我们要进入该session,需要使用screen -r u-net
进入到该session中,此时就可以在该session里进行操作了,如运行程序。之后我们可以使用Ctrl + a +d
命令将该session丢到后台进行处理。
注:
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
Ctrl-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
2. 示例:
2.1. screen 安装
centos7.6的最小化安装没有这个命令,需要自己安装
yum install screen -y
2.2. 新建一个会话窗口
[root@localhost bin]# screen -S demo
**解释:**如果不使用-S参数指定会话名称,那么就会默认使用当前的远程终端创建一个名称
2.3. 列出当前所有的会话窗口
[root@localhost screen-4.6.2]# screen -ls
There is a screen on:
13263.demo (Attached)
1 Socket in /var/run/screen/S-root
解释: 输出的前面的13263应该是这个会话的进程id
2.4. 退出当前的会话窗口(退出后这个screen就会消失)
[root@localhost ~]# exit
2.5. 远程分离指定的会话窗口
[root@localhost bin]# screen -d 13361
解释: -d参数后面可以跟会话的id或窗口名称
注意: 分离会话不是结束这个会话
2.6. 返回到指定的会话
[root@localhost bin]# screen -r 13361
经试验:
screen创建的窗口不存在层级关系,是平行的.一个screen只能有一个远程终端相连接
2.7. 新建一个会话窗口并运行指定程序(程序结束后,这个会话也就消失了)
[root@localhost ~]# screen vi demo.txt
2.8. 分离当前会话
ctrl+a,d
2.9. 清除dead会话(如果一个screen会话被杀死的话,使用清除命令清除一下)
[root@localhost ~]# screen -wipe
[root@localhost ~]# screen -ls