linux下如何将一个进程放入后台执行关闭终端后还不受影响?如何把工作窗口暂时共享给小伙伴做个操作?
你可能知道nohub XXX &,setsid XXX,disown ,甚至于你也用过screen,对了,基本也就是这些。除此之外虫虫再给你介绍一款类似screen,但是更优雅的工具Tmux,可以用做后台任务执行,也特别适合于码农做分屏开发调试,终端共享等。
关于tmux?
Tmux是终端多路复用器(terminal multiplexer)简称,是GNU Screen的替代品。我们可以启动Tmux会话,然后在该会话中打开多个窗口,并且分屏形成矩形窗格,执行不同操作。基本操作方式和大家已经熟悉的screen类似,唯一差异是Tmux中的所有命令都以前缀ctrl + b开头。相对比screen是ctrl + a
Tmux的安装
包管理器安装
可以使用各大linux发行版的软件包管理器一键安装Tmux。
Debian系和Ubuntu:
sudo apt install tmux
Redhat系包括CentOS
yum install -y tmux
在macOS上安装Tmux
brew install tmux
源码安装
Tmux也支持源码安装,具体方法:
Tmux源码依赖libevent 2.x和ncurses需要提前安装。然后从Tmux源码仓(github: tmux/tmux)clone 一份源码
git clone github:/tmux/tmux.git cd tmuxsh autogen.sh./configure && make
Tmux使用方法
开启Tmux 会话
要启动Tmux会话很简单,只需在控制台中键入tmux。
tumx
就会打开一个新会话,会话包括一个新窗口并自动启动一个shell。
进入Tmux后,会在屏幕底部看到状态行,会显示有关当前会话的信息。
现在可以运行第一个Tmux命令。
例如,要查询tumx所有命令的列表:
Ctrl + b ? (先按ctrl+b,然后输入?)
创建命名Tmux会话(tmux new -s session_name)
默认Tmux会话以数字命名。当运行多个tmux会话时,为了管理方便,可以在启动时候添加名称参数,给会话命名。要创建一个命名会话,使用-s参数运行:
tmux new -s session_name
比如命名一个名为chongchong的会话
注意命令会话窗口下面状态栏,显示已经为"chongchong"了。
暂退Tmux会话(Ctrl + a d)
可以通过键入以下命令从Tmux会话中暂退并返回到正常的shell:
Ctrl + a d
从会话中暂退后,在Tmux会话中运行的程序将继续运行。
也可以通过直接用鼠标关闭到整个终端窗口,这时,tmux所在的shell进程会消失。但是tmux会话不受影响,继续任务执行,也是暂退状态。
注意要退出tmux,直接exit或者ctrl+d,就会退出tmux,返回原shell,这和一半的shell操作一样。
返回Tmux会话(tmux attach-session)
如果要返回Tmux会话,你需要指定会话的名称。如果你不指定会话名,tmux会返回到你最近使用的一个会话,这个有点智能,比screen强,screen -r只能返回有一个会话的,而tmux attach-session多个会话,不指定也可以。
要返回到会话"chongchong",键入:
tmux attach-session -t chongchong
获取Tmux会话列表(tmux ls)
要获取当前运行所有会话的列表,使用命令
tmux ls
列表入下图所示:
输出的第一列为会话的名称(比如0,2,chongchong);第二列为窗口数(比如会话0包括3个窗口);第三列为会话创建时间;最后为窗口大小。
Tmux会话新建窗口(Ctrl + a c)
默认情况下,启动一个新的tmux会话时,它会创建一个包含shell的窗口。我们可以通过Ctrl + a c新添加一个窗口,并自动其分配0~9数字来表示。可以通过分屏在一个窗口展现,或者通过ctrl+a w 选择切换窗口
所有窗口的列表显示在屏幕底部的状态行中。
常见Tmux命令
Bellow是一些用于管理Tmux窗口和窗格的最常用命令:
Ctrl + b c创建一个新窗口
Ctrl + b w从列表中选择窗口
Ctrl + b 0切换到窗口0(根据编号)
Ctrl + b ,重命名当前窗口
Ctrl + b %将当前窗格水平分割为两个窗口
Ctrl + b"将当前窗格垂直拆分为两个窗口
Ctrl + b o转到下一个窗口
Ctrl + b ;在当前窗口和上一窗口之间切换
Ctrl + b x关闭当前窗口
自定义配置Tmux(~/.tmux.conf)
启动Tmux时,会检测用户目录下的如果文件.tmux.conf(~/.tumx.conf),如果存在,则会从该文件读取其配置参数。下面是一个tumx配置文件实例,其中包含自定义状态行和一些其他选项:
cat ~/.tmux.conf
# 颜色增强
set -g default-terminal 'screen-256color'
# 滚动条为10000行
set -g history-limit 10000
# 改变状态行颜色
set -g status-fg green
set -g status-bg black
基本Tmux流程和窗口共享
以下是开始使用Tmux的最基本步骤:
1.在命令提示符下,键入tmux new -s my_session,
2.运行所需的程序。
3.使用键序列Ctrl-b + d从会话中分离(或者直接鼠标关闭窗口)。
4.通知小伙伴,用同样账号登陆系统
5.键入tmux attach-session -t my_session,重新连接到Tmux会话。
如果自己使用,则用1,2,3,5,如果要和伙伴共享窗口则可以通过 1,2,3,4,5步骤。