Linux screen命令用于多重视窗管理。系统管理员经常需要远程登录到Linux 服务器,运行一些需要很长时间才能完成的任务,比如系统备份、ftp传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉。
我们在使用ssh连接到远程机器后,执行任务(如运行python程序来训练一个网络),如果希望我们在退出之后远程机器仍在执行该任务,并且我们随时可以回来查看,就可以使用screen来管理。只要screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上就可以恢复会话的运行。同样,在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让screen挂起(切换到后台)。
每新建一个窗口,就是一个session,它可以有对应的名字,这样方便我们在登回机器时进行区分。
- 新建一个叫yourname的session:
screen -S yourname
使用ctrl a + d
暂时离开当前窗口
使用ctrl a + k
杀死当前窗口
- 列出当前所有的session:
screen -ls
- 回到yourname这个session:
screen -r yourname
- 远程detach某个session:
screen -d yourname
- 结束当前session并回到yourname这个session:
screen -d -r yourname
- 结束当前的session,并logout,再连接yourname这个session:
screen -D -r yourname
- 用screen -d命令detached session后, 如何杀死它:
screen -list
输出会像这样:
There is a screen on:
23536.pts-0.wdzee (10/04/2012 08:40:45 AM) (Detached)
1 Socket in /var/run/screen/S-root.
只需要这样就可以杀死这个会话:
screen -S 23536 -X quit