本文将对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权限解决
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