本文将对 tmux 与 screen 命令的使用进行比较,并简单的进行对比。
封面图片来源《妄想破绽》
前言
你是否有过在 SSH 连接远程终端的时候,需要同时后台运行多个程序,抑或是需要开启多个终端进行观察。那么你需要一个终端复用程序,比如 tmux
或者 screen
。tmux
和 screen
命令差不多,都是终端复用程序,你还可以在 SSH 断开后重新连接端口继续执行命令。
安装
如果你的 Ubuntu 没有 tmux
或者 screen
,那么你可以使用如下命令进行安装
tmux
:
1 | sudo apt install tmux |
screen
:
1 | sudo apt install screen |
使用
tmux
简单创建
1 | tmux |
[0] 0:zsh* : 意味着现在是 session name 为 0,session number 为 0,环境为 zsh,* 意味着当前窗口
“DESKTOP-7A4A8RD” : hostname
18:59 28-Mar-21 : 当前时间
创建一个有名字的 session
1 | tmux new -s <session-name> |
此时可以看到原本 [0] 里面的 0 变成了设置的 session-name
竖直分离窗口
在 tmux
窗口中按下 ctrl+b
然后再按下 %
水平分离窗口
在 tmux
窗口中按下 ctrl+b
然后再按下 "
展示会话编号
在 tmux
窗口中按下 ctrl+b
然后再按下 q
切换窗口
在 tmux
窗口中按下 ctrl+b
然后再按下 o
关闭窗口
在 tmux
窗口中按下 ctrl+b
然后再按下 x
或者 ctrl+d
列出已有 tmux
在 tmux
窗口中按下 ctrl+b
然后再按下 s
分离会话
在 tmux
窗口中按下 ctrl+b
然后再按下 d
或者
1 | tmux detach |
重连会话
1 | tmux attach -t <session-name> |
杀死会话
1 | tmux kill-session -t <session-name> |
screen
1 | screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>] |
wsl 中使用 screen
提示权限不足可以参考本文末尾的 wsl 中提示 screen 需要 root 权限解决
创建简单窗口
在 screen
窗口中按下 ctrl+a
然后再按下 c
1 | screen |
创建终端并运行命令
1 | screen vi main.c |
离开 screen 终端
在 screen
窗口中按下 ctrl+a
然后再按下 d
显示已经创建的 screen
在 screen
窗口中按下 ctrl+a
然后再按下 "
1 | screen -ls |
重新连接会话
1 | screen -r <id> |
水平分割
在 screen
窗口中按下 ctrl+a
然后再按下 |
,只会分割而不会创建新的 session。使用 ctrl+a
然后按下 tab
切换窗口,ctrl+a
然后按下 c
新建 session。下同
screen 竖直分割
在 screen
窗口中按下 ctrl+a
然后再按下 S
。注意大写
分割中切换窗口
使用 ctrl+a
然后按下 tab
切换窗口
杀死 session
使用 ctrl+d
对比
screen
和 tmux
都是终端复用,大体的功能上都差不多,tmux
是 BSD 协议,screen
是 GNU 协议。从个人感觉上 tmux
对个人更友好,在分割窗口 时候自动创建新会话,同时有状态条显示,还可以自动命名窗口,这是 screen
没有的。screen
可以和其他用户分享会话,而 tmux
不行。
wsl 中提示 screen 需要 root 权限解决
参考 superuser
1 | mkdir ~/.screen && chmod 700 ~/.screen |
可以把下面这一句放进 ~/.bashrc
1 | export SCREENDIR=$HOME/.screen |
参考
Tmux vs. Screen tool comparison
How to Use tmux on Linux (and Why It’s Better Than Screen)
使用 tmux 分屏(既可以左右分屏,也可以上下分屏)
Tmux 使用教程
Linux screen 命令
Cannot make directory ‘/var/run/screen’: Permission denied