runsisi's

technical notes

screen 使用

2019-02-28 runsisi#utils

在使用 ddrescue 等工具时,可能需要长时间的保持 SSH 连接,为避免终端软件退出等不可避免的问题,此时可以使用 screen 管理终端会话。

安装 screen

~$ sudo apt install screen

创建匿名会话

~$ screen

创建命名会话

~$ screen -S rescue

列出所有会话

~$ screen -ls
There are screens on:
        496.rescue      (2019年02月28日 07时54分03秒)   (Attached)
        392.pts-8.ceph20        (2019年02月28日 07时51分24秒)   (Detached)
2 Sockets in /var/run/screen/S-runsisi.
~$ tree /var/run/screen/
/var/run/screen/
└── S-runsisi
    ├── 392.pts-8.ceph20
    └── 496.rescue

1 directory, 2 files

attach 会话

~$ screen -r rescue
~$ screen -r 73420.rescue
~$ screen -r 73228

detach 其它终端已 attach 的某个会话,并在当前终端 attach 该会话

~$ screen -dr rescue

detach 当前会话

~$ ctrl-a-d

终止当前会话

~$ ctrl-d
~$ exit

终止 detach 状态的会话

$ screen -ls
There is a screen on:
        32756.pts-8.ceph20      (2019年02月28日 07时47分47秒)   (Detached)
1 Socket in /var/run/screen/S-runsisi.
~$ screen -S 32756 -X quit
~$ screen -ls
No Sockets found in /var/run/screen/S-runsisi.

创建窗口

~$ ctrl-a-c

切换至下一个窗口

~$ ctrl-a-n

切换至前一个窗口

~$ ctrl-a-p

关闭当前窗口

~$ ctrl-a-k

参考资料

screen: Persistent Terminal Sessions

https://remysharp.com/2015/04/27/screen

Using GNU Screen to Manage Persistent Terminal Sessions

https://www.linode.com/docs/networking/ssh/using-gnu-screen-to-manage-persistent-terminal-sessions/

10 Screen Command Examples to Manage Linux Terminals

https://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/