screen 使用总结

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 常用命令

  1. 暂时离开会话,并保证会话中的程序依旧运行
    在欲退出的会话中使用 Ctrl + a d(按Ctrl, 并依次按a, d),可以暂时离开会话.
    推荐所有使用screen会话运行的程序都使用该方式退出,然后关闭与服务器的ssh连接
  2. 查看当前存在的 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 通常使用流程

  1. 新建服务器任务
    1. 使用ssh客户端连接远程服务器
    2. screen -S task 新建任务会话
    3. python task.py 运行任务程序
    4. Ctrl a d 离开会话
    5. 进行服务器其他操作或断开服务器ssh连接
  2. 查看程序运行情况
    1. 使用ssh客户端连接远程服务器
    2. screen -r task恢复任务会话
    3. 查看任务执行情况
    4. Ctrl a d 离开会话
  3. 终止程序
    1. 使用ssh客户端连接远程服务器
    2. screen -r task恢复任务会话
    3. 查看任务执行情况
    4. exit 终止会话

screen 常见问题

  1. 若不小心新建了相同名称的会话,不知道该如何操作制定会话.
    可以使用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.

参考

  1. https://www.runoob.com/linux/linux-comm-screen.html
如有不当,欢迎指正 :)
原文地址:https://www.cnblogs.com/lif323/p/14727568.html