使用 Linux 的 screen 命令
在 SSH 远程主机上执行需要漫长等待的任务时, 如果网络突然终止了, 那么SSH 会话会结束, 任务也会被中断, 而 screen 命令可以解决这个问题
简介
screen 可以新建 screen 会话, 在这个会话中可以打开终端, 即使断开连接, 终端中的任务还会在后台运行
安装 Linux GNU Screen
很多 Linux 发行版会预安装 screen, 可以检查其版本
$ screen -version
输出:
Screen version 4.06.02 (GNU) 23-Oct-17
基于 Ubuntu and Debian
$ sudo apt install screen
基于 CentOS and Fedora
$ sudo yum install screen
开始使用 Linux Screen
新建 screen 会话
$ screen
可以指定名称
$ screen -S session_name
这将会打开一个 screen 会话, 一个新的 shell
分离 Screen 会话
新建名为 sleep 的会话
screen -S sleep
在新建的会话中执行命令, 睡眠 5 分钟, 模拟需要长时间等待的任务
sleep 300
组合键 Ctrl+A+D 让命令在后台运行并退出 Screen 会话
输出
[detached from 12728.sleep]
列举 Screen 会话
分离后, 在主会话中使用
screen -ls
输出
There is a screen on:
12728.sleep (05/03/2020 05:36:14 PM) (Detached)
1 Socket in /run/screen/S-jianghuixin.
回到 Screen 会话
使用名称
screen -r sleep
使用进程号
screen -r 12728
结束 Screen 会话
回到 Screen 会话后, Ctrl+C 中断正在运行的任务, 然后 exit 或 Ctrl+D
输出
[screen is terminating]