最近因为疫情缘由不能返校,只能经过 SSH
远程连接学校的电脑和服务器跑程序。可是使用 SSH
进行远程终端操做时,会将每次 SSH
链接的会话 (session) 与进程进行绑定。当关闭或者断开 SSH
连接时,正在运行的进程也会随之终止。这种问题可经过使用 screen
或 tmux
,将 SSH
中的进程调到后台运行进行解决。html
screen
的使用$ screen -S <session-name> # 建立会话 $ <ctrl+a ctrl+d> # 临时离开 $ exit # 关闭会话 $ screen -ls # 列出全部 $ screen -r <session-name> # 进入会话 $ screen -r <session-name> -X quit # 外部关闭
安装 screen
工具:shell
$ sudo apt-get install screen
建立 screen
会话:windows
$ screen -S <session-name>
而后就会直接进入 screen
会话中,而后:服务器
exit
指令将退出并关闭这个会话;ctrl+a ctrl+d
组合快捷键临时离开这个会话;可以使用 screen -ls
指令查看当前有哪些会话在运行:session
$ 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
会话。同时也可使用:ui
$ screen -x <session-name>
对 screen
会话进行同步。另外 从外部关闭一个 screen
会话:code
$ screen -r <session-name> -X kill
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
工具:htm
$ sudo apt-get install tmux
建立 screen
会话:blog
$ 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
做为默认终端跑点程序,用不到这个因此就不去花时间去学这个了,更多内容请参考: