作为linux服务器管理员,经常要使用ssh登陆到远程linux机器上做一些耗时的操作。
也许你遇到过使用telnet或SSH远程登录linux,运行一些程序。如果这些程序需要运行很长时间(几个小时),而程序运行过程中出现网络故障,或者客户机故障,这时候客户机与远程服务器的链接将终端,并且远程服务器没有正常结束的命令将被迫终止。
又比如你SSH到主机上后,开始批量的scp命令,如果这个ssh线程断线了,scp进程就中断了。在远程服务器上正在运行某些耗时的作业,但是工作还没做完快要下班了,退出的话就会中断操作了,如何才好呢?
我们利用screen命令可以很好的解决这个问题。实现在断开SSH的情况下,在服务器上继续执行程序。
那什么是screen命令?
Screen被称之为一个全屏窗口管理器,用他可以轻松在一个物理终端上获得多个虚拟终端的效果。
Screen功能说明:
简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器,这意味着你能够使用一个单一的终端窗口运行多终端的应用。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。
Screen命令语法:
screen[-AmRvx-ls-wipe][-d<作业名称>][-h<行数>][-r<作业名称>][-s][-S<作业名称>]
Screen命令参数:
-A-[r|R]将所有的视窗都调整为目前终端机的大小。
-cfilename用指定的filename文件替代screen的配置文件’.screenrc’.
-d[pid.tty.host]断开screen进程(使用该命令时,screen的状态一定要是Attached,也就是说有用户连在screen里)。一般进程的名字是以pid.tty.host这种形式表示(用screen-list命令可以看出状态)。
-D[pid.tty.host]与-d命令实现一样的功能,区别就是如果执行成功,会踢掉原来在screen里的用户并让他logout。
-h<行数> 指定视窗的缓冲区行数。
-ls或–list显示目前所有的screen作业。
-m即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-pnumberorname预先选择一个窗口。
-r[pid.tty.host]恢复离线的screen进程,如果有多个断开的进程,需要指定[pid.tty.host]
-R先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-sshell指定建立新视窗时,所要执行的shell。
-S<作业名称>指定screen作业的名称。(用来替代[pid.tty.host]的命名方式,可以简化操作).
-v显示版本信息。
-wipe检查目前所有的screen作业,并删除已经无法使用的screen作业。
-x恢复之前离线的screen作业。
Screen命令的常规用法:
screen-d-r:连接一个screen进程,如果该进程是attached,就先踢掉远端用户再连接。
screen-D-r:连接一个screen进程,如果该进程是attached,就先踢掉远端用户并让他logout再连接
screen-ls或者-list:显示存在的screen进程,常用命令
screen-m:如果在一个Screen进程里,用快捷键crtl+ac或者直接打screen可以创建一个新窗口,screen-m可以新建一个screen进程。
screen-dm:新建一个screen,并默认是detached模式,也就是建好之后不会连上去。
screen-pnumberorname:预先选择一个窗口。
Screen实现后台运行程序的简单步骤:
1>要进行某项操作时,先使用命令创建一个Screen:
复制代码