zoukankan      html  css  js  c++  java
  • Linux中screen命令

    screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

    screen重要性

    screen的重要性,主要是体现在它可以方便的在服务器上一直运行,只要服务器没有宕机,没有断电它就可以做到不用停止。其实后端工程师经常会遇到,要通过执行脚本处理一些数据,但这个脚本可能需要执行半天或者几天,screen就是最佳选择了,过一段时间登录到服务器上查看下运行状态,是否运行完成。没有完成挂起来继续运行。

    screen 常用的参数

    screen 命令参数很多,我们只看下平常用的比较多的几个

    参数 说明
    ls 列出当前所有的回话
    S 大写的S,新建一个名称是xxx的会话
    r 通过序号连接进程会话
    d detach断开某个会话
    D 与-d命令相同,但是会logout原来在screen里的用户

    在每个screen 会话下,所有命令都以 ctrl+a开始的

    参数 说明
    ctrl+a d detach会话,将目前的 screen session 丢到后台执行,并会回到还没进 screen 时的状态,screen 都在继续执行,即使 logout 也不影响后台的执行
    ctrl+a k 强行关闭当前的窗口
    ctrl+a z 把当前的会话放到后台执行,用fg命令可以调回来

    screen 使用

    先模拟一个需要执行很长时间的脚本代码

    test.php
    <?php
    sleep(10000);
    echo 111;
    ?>
    

    程序休眠10000秒之后输出 1111
    先创建一个screen,然后执行它之后,退出登录状态

    screen -S test
    php test.php
    

    创建名为test的screen,进入screen之后执行test.php。然后让脚本在 screen里面一直执行,按 Ctrl+a d让脚本在screen后台执行。

    screen -S test
    [detached from 3934.test]
    

    exit 退出登录,等一段时间然后再登录上去,查看下脚本是否还在执行

    ssh 
    screen -ls
    There are screens on:
    	3934.test	(02/25/2020 10:27:06 PM)	(Detached)
    

    名为test的screen ID 为3934,连接该screen并进入

    screen -r 3934
    php test.php
    
    

    可以看到 test.php的脚本还在执行。

    执行ctrl+a z,然脚本在后台执行,然后再使用fg调到前台

    [1]+  Stopped                 screen -r 3934
    执行fg
    php test.php
    
    

    再看下screen -d 和 -D
    重新打开一个窗口,ssh之后,执行

    screen -d 3934
    [3934.test detached.]
    然后查看前一个窗口,看看是否断开了screen
    screen -r 3934
    [remote detached from 3934.test]
    

    再看下,-D,在第一个窗口

    screen -r 3934
    第二个窗口执行-D
    screen -D 3934
    [3934.test power detached.]
    再看第一个窗口已经被强制退出登录了。
    screen -r 3934
    [remote power detached from 3934.test]
    Connection to 127.0.0.1 closed.
    

    作为开发人员,其实平常开发中只需要知道三个命令就能满足90%以上的使用范围了

    screen -ls
    screen -S
    screen -R
    ctrl+a d
    
  • 相关阅读:
    Spring boot unable to determine jdbc url from datasouce
    Unable to create initial connections of pool. spring boot mysql
    spring boot MySQL Public Key Retrieval is not allowed
    spring boot no identifier specified for entity
    Establishing SSL connection without server's identity verification is not recommended
    eclipse unable to start within 45 seconds
    Oracle 数据库,远程访问 ora-12541:TNS:无监听程序
    macOS 下安装tomcat
    在macOS 上添加 JAVA_HOME 环境变量
    Maven2: Missing artifact but jars are in place
  • 原文地址:https://www.cnblogs.com/feixiangmanon/p/12364460.html
Copyright © 2011-2022 走看看