小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
我们经常需要远程登录到Linux服务器,运行一些需要很长时间才能完成的任务或者脚本,一般情况下我们都是为每一个这样的任务单独开一个终端窗口,由于它们执行的执行时间太长,在任务执行的过程中又不能关闭终端窗口或者断开连接,否则这个任务就会被杀掉,就会功亏一篑。在这种情况下,使用Linux的screen命令可以有效的避免这个问题,接下来我们一起来了解一下这个工具的用法。
screen是一款用于命令行终端切换的工具,用户可以通过该工具同时连接多个本地或远程的命令行会话,并在其间自由切换。
在screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。
安装screen
在一些流行的Linux发行版上已经预装screen,可以使用screen -v命令检查服务器上是否已经安装。
如果在没有安装screen,可以使用系统提供的包管理器进行安装。
CentOS:
yum -y install screen
Ubuntu:
apt-get -y install screen
使用
通常情况下,screen创建的终端,有两个工作模式。
- Attached:表示当前screen正在作为主终端使用,为活跃状态。
- Detached:表示当前screen正在后台使用,为非激发状态。
语法
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]
参数说明:
- -A 将所有的视窗都调整为目前终端机的大小。
- -d <作业名称> 将指定的screen作业离线。
- -h <行数> 指定视窗的缓冲区行数。
- -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
- -r <作业名称> 恢复离线的screen作业。
- -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
- -s 指定建立新视窗时,所要执行的shell。
- -S <作业名称> 指定screen作业的名称。
- -v 显示版本信息。
- -x 恢复之前离线的screen作业。
- -ls或--list 显示目前所有的screen作业。
- -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
启动screen终端
# 使用 -S 创建一个叫name的screen终端
screen -S name
或
# 使用 -R 创建一个叫name的screen终端
screen -R name
之后,会新建一个空白的Terminal,这个就是新的screen终端了,可以在这个新终端里运行我们想要运行的程序或脚本等。
离开screen终端
要想离开当前的screen终端,回到主终端,可以按下Ctrl + a和d键,离开后,screen会话仍将是活跃的,之后可以随时重新连接。
重新连接到screen终端
screen -r
如果你有多个 screen 会话,你可以用 ls 参数列出它们。
screen -ls
There are screens on:
45214.session3 (2021年09月30日 10时19分41秒) (Detached)
45195.session2 (2021年09月30日 10时19分34秒) (Detached)
45132.session1 (2021年09月30日 10时19分13秒) (Detached)
3 Sockets in /run/screen/S-psh.
如上,有三个活跃的screen会话,如果想要重新连接到“session2”会话,可以执行:
screen -r 45195
或者
screen -r -S session2
中止screen终端
可以按下Ctrl+d,或者在命令行中使用exit命令。
要查看screen命令所有的功能,你可以使用man screen命令查看screen的man手册。
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !