最近由于疫情原因不能返校,只能通过 SSH
远程链接学校的电脑和服务器跑程序。但是使用 SSH
进行远程终端操作时,会将每次 SSH
连接的会话 (session) 与进程进行绑定。当关闭或者断开 SSH
链接时,正在运行的进程也会随之终止。这种问题可通过使用 screen
或 tmux
,将 SSH
中的进程调到后台运行进行解决。
1. screen
的使用
$ screen -S <session-name> # 创建会话
$ <ctrl+a ctrl+d> # 临时离开
$ exit # 关闭会话
$ screen -ls # 列出所有
$ screen -r <session-name> # 进入会话
$ screen -r <session-name> -X quit # 外部关闭
安装 screen
工具:
$ sudo apt-get install screen
创建 screen
会话:
$ screen -S <session-name>
然后就会直接进入 screen
会话中,然后:
- 执行
exit
指令将退出并关闭这个会话; - 使用
ctrl+a ctrl+d
组合快捷键临时离开这个会话;
可使用 screen -ls
指令查看当前有哪些会话在运行:
$ screen -ls
There are screens on:
515300.sc0 (2020年05月01日 23时27分48秒) (Detached)
514105.sc1 (2020年05月01日 23时27分43秒) (Detached)
2 Sockets in /run/screen/S-aoyile.
然后可使用:
$ screen -r <session-name>
再次进入这个 screen
会话。同时也可以使用:
$ screen -x <session-name>
对 screen
会话进行同步。另外 从外部关闭一个 screen
会话:
$ screen -r <session-name> -X kill
2. tmux
的使用
$ tmux new -s <session-name> # 创建会话
$ <ctrl+b d> # 临时离开
$ exit / <ctrl+d> # 关闭会话
$ tmux ls # 列出所有
$ tmux attach -t <session-name> # 进入会话
$ tmux switch -t <session-name> # 切换会话
$ tmux kill-session -t <session-name> # 外部关闭
如果允许的话,可以考虑支持多窗口和指令更为直观的 tmux
。安装 tmux
工具:
$ sudo apt-get install tmux
创建 screen
会话:
$ tmux new -s <session-name>
然后就会直接进入 tmux
会话中,然后:
- 使用
ctrl+d
或者执行exit
指令将退出并关闭这个会话; - 使用
ctrl+b d
组合快捷键(注意是先按下ctrl+b
然后再只按d
,一定记得中间要松开ctrl
)或者执行tmux detach
会临时离开这个会话;
可使用 tmux ls
指令查看当前有哪些会话在运行:
$ tmux ls
tm1: 1 windows (created Sat May 2 00:00:00 2020)
tm2: 1 windows (created Sat May 2 00:00:10 2020)
然后可使用:
$ tmux attach -t <session-name>
再次进入这个 tmux
会话。同时也可以使用:
$ tmux switch -t <session-name>
从一个 tmux
会话切换到另一个 tmux
会话里。另外 从外部关闭一个 tmux
会话:
$ tmux kill-session -t <session-name>
tmux
的另一个强大之处是支持多个 pane 的多个终端,这个可能在纯文本终端环境下很有用。自己主要是在 GUI 里使用 terminator
作为默认终端跑点程序,用不到这个所以就不去花时间去学这个了,更多内容请参考:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。