screen
在使用ssh方式连接远程服务器时,若在远端长时间执行某个任务,期间如果发生远程中断,本地机器关机等情况,远程服务也不得不终止,这样会带来一些麻烦.
screen 该软件主要时帮助解决该问题.
screen 安装
在manjaro中使用sudo pacman -S screen
进行安装,通常需要在服务器端安装.
screen 使用
screen 中有会话的概念,通常screen -S name
的方式建立会话,name
为会话的名字.
在服务器端使用screen -S test
会建立一个名为 test
的会话,在该会话下新建的执行程序,都不会因为ssh中断而停止.
例如在服务器段执行一下命令,假设 run_two_days.py 是一个需要跑两天的程序.
screen -S test
python run_two_days.py
即便在本地关闭ssh客户端, 服务器依旧会运行 python run_two_days.py
.在服务器运行该程序的两天期间任意时间点,使用ssh连接服务器,并
使用 screen -r test
回复会话来检查程序的运行情况.
screen 常用命令
- 暂时离开会话,并保证会话中的程序依旧运行
在欲退出的会话中使用 Ctrl + a d(按Ctrl, 并依次按a, d),可以暂时离开会话.
推荐所有使用screen会话运行的程序都使用该方式退出,然后关闭与服务器的ssh连接 - 查看当前存在的 screen 会话
screen -ls
如下所示服务器当前存在两个会话,会话名称前面为该进程的pid.
[lf@lf-pc ~]$ screen -ls
There are screens on:
302072.test (Detached)
302045.train (Detached)
2 Sockets in /run/screens/S-lf.
screen 通常使用流程
- 新建服务器任务
- 使用ssh客户端连接远程服务器
screen -S task
新建任务会话python task.py
运行任务程序Ctrl a d
离开会话- 进行服务器其他操作或断开服务器ssh连接
- 查看程序运行情况
- 使用ssh客户端连接远程服务器
screen -r task
恢复任务会话- 查看任务执行情况
Ctrl a d
离开会话
- 终止程序
- 使用ssh客户端连接远程服务器
screen -r task
恢复任务会话- 查看任务执行情况
exit
终止会话
screen 常见问题
- 若不小心新建了相同名称的会话,不知道该如何操作制定会话.
可以使用screen -ls
先查看会话的信心,然后使用会话前面的pid来操作执行会话.
如下图,可使用 302154, 302045来操作对应的train,例如恢复会话screen -r 302154
[lf@lf-pc ~]$ screen -li
There are screens on:
302154.train (Detached)
302072.test (Detached)
302045.train (Detached)
3 Sockets in /run/screens/S-lf.