• screen命令


    大家在使用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的参数以及用法。

  • 相关阅读:
    Overview | POCO C++ Libraries
    simple.c
    Classes for Writing HTTP Clients in C++ CodeProject
    APScheduler 2.0.3 : Python Package Index
    neon HTTP and WebDAV client library
    HTTP Client C API
    vi编辑器的学习使用(二十一)
    自由软件的定义
    vi编辑器的学习使用(二十三))
    vi编辑器的学习使用(二十二)
  • 原文地址:https://www.cnblogs.com/tevic/p/3747507.html
Copyright © 2020-2023  润新知