zoukankan      html  css  js  c++  java
  • 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的参数以及用法。

  • 相关阅读:
    svn command line tag
    MDbg.exe(.NET Framework 命令行调试程序)
    Microsoft Web Deployment Tool
    sql server CI
    VS 2010 One Click Deployment Issue “Application Validation did not succeed. Unable to continue”
    mshtml
    大厂程序员站错队被架空,只拿着五折工资!苟活和离职,如何选择?
    揭秘!Windows 为什么会蓝屏?微软程序员竟说是这个原因...
    喂!千万别忘了这个C语言知识!(~0 == -1 问题)
    Linux 比 Windows 更好,谁反对?我有13个赞成理由
  • 原文地址:https://www.cnblogs.com/tevic/p/3747507.html
Copyright © 2011-2022 走看看