Linux中screen命令

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

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,而后执行它以后,退出登陆状态session

screen -S test
php test.php

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

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并进入code

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以后,执行rem

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
相关文章
相关标签/搜索