使用screen管理会话

系统 1433 0

大家在使用SSH或telnet远程连接服务器时,可能都遇到为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连 接,否则这个任务就会被杀掉,一切半途而废了。也许nohup命令可以达到这个目的,如果程序的标准输出/标准错误是终端, nohup默认将其重定向到nohup.out文件。值得注意的是nohup命令只是使得程序忽略SIGHUP信号,还需要使用标记&把它放在后 台运行。

      nohup <command> [argument…] &
    

虽然nohup很容易使用,但还是比较“简陋”的,对于简单的命令能够应付过来,对于复杂交互的程序就麻烦了。那么现在过来瞧瞧screen吧!

1、什么是screen?

screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。screen中有会话的概念,用户可以在一个screen会话中创建多个 screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。当断开或关闭终端时,只要不杀死screen的进 程,待重新连接后任能继续断开前的操作。

2、screen参数及组合键

启动screen方式有两种,一种是直接在命令提示符下输入screen,这时Screen将创建一个执行shell的全屏窗口。你可以执行任意 shell程序,就像在ssh窗口中那样。在该窗口中键入exit退出该窗口,如果这是该screen会话的唯一窗口,该screen会话退出,否则 screen自动切换到前一个窗口。另一种方式是在screen命令后跟你要执行的程序,例如“ screen ftp”,Screen创建一个执行ftp命令的单窗口会话,退出ftp将退出该窗口/会话。

2.1 screen常用的命令选项

screen的语法格式如下:

      screen [ -options ] [ cmd [ args ] ]
    

常用的选项有:

          -c file	使用配置文件file,而不使用默认的$HOME/.screenrc
      
-d|-D [pid.tty.host] 不开启新的screen会话,而是断开其他正在运行的screen会话
  -h<行数>  指定视窗的缓冲区行数。
  -m  即使目前已在会话中的screen会话,仍强制建立新的screen会话。
  -r sessionowner/ [pid.tty.host] 重新连接一个断开的会话。多用户模式下连接到其他用户screen会话需要指定sessionowner,需要setuid-root权限。
  -R  先试图恢复离线的会话。若找不到离线的会话,即建立新的screen会话。
  -s  指定建立新screen会话时,所要执行的shell。
  -S sessionname 创建screen会话时为会话指定一个名字
  -v  显示版本信息。
  -x  恢复之前离线的screen会话。
  -ls或--list  显示目前所有的screen会话。
  -wipe  检查目前所有的screen会话,并删除已经无法使用的screen会话。

2.2 screen常用的组合键

screen常用的组合键描述如下:

  * 普通列表项目

3、screen的使用

例如当我们ssh登录服务器后,使用scp在传输大文件时,通常的情况就是要耐心的等待文件传输完成才能将终端关闭,那么下面来看看通过screen带来的方便。

首先使用ssh登录服务器,在命令提示符下输入screen:

      # screen
    

在screen shell中输入scp命令,输入密码后开始文件传输。如果不愿意等待,那么直接按下”Ctrl+a+d”的组合键,或者关闭当前的终端,随便怎么操作,只要不杀死screen会话就行。

      # scp -r images 172.16.78.111:~
      
root@172.16.78.111's password:
mondorescue.iso 0% 22MB 22.2MB/s 00:01

使用screen -ls可以查看当前系统所打开的screen会话,如下:

      # screen -ls
      
There are screens on:
20642.pts-1.white (Detached)
20713.pts-1.white (Detached)
2 Sockets in /tmp/screens/S-root.

若要其中的会话,则输入screen -r PID,如下:

      # screen -r 20713
      

执行该命令后,马上就能看到刚才正在进行的scp命令的完成情况,是不是很方便?通过man screen可以看到更详细的screen的参数以及用法。

使用screen管理会话


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论