Linux 终端复用器tmux,实现任务后台运行,即会话不间断,踩坑及使用要点记录
1.同类型的还有比较老screen命令,tmux功能更多
2.解决的问题
比如 正在 终端ssh连接到服务器执行一个安装或打包任务,过程很长,期间不能中断,情况1:你想执行其他命令需要再开一个终端
情况2:网络不稳定断联,任务会失败,就需要重新执行;
情况3:你到点下班了,任务还在执行,晚上公司会断电,所以你电脑也要关,关闭了终端,前台执行的任务就没法继续
3.将任务置于后台的一些命令和方法,只能在当前session,断开或关闭session终端后台任务也会关闭,比如:
执行命令时,在命令后加 &,命令就会后台运行,例子: sleep 600 &
命令已经在执行中,则按ctrl + Z 键,则命令转到后台并暂停,用jobs -l可查看任务和编号,用 bg %编号 将任务置于后台,用 fg %任务编号将任务转到前台
4.真正可以实现需求的命令或工具
4.1 nohup xxxx &
nohup 含义即忽略终端推出时给本次session所有任务发送的终止信号,非常简单直接,缺点就是关闭终端,下次再连接只能从 进程里查找和操作任务了
4.2 screen
一个工具,历史久远,是第一批GUN项目里的,所以老的发行版基本都带,新的有的不带,只是上面需求已经够用
4.3 tmux(推荐),与screen类似,但是功能更多,使用更友好,进入后在底部会有一个底栏提示当前所在的 session,window(窗口),pane(窗格)
常用命令:
新建会话: tmux new -s <session-name>
分离会话:tmux detach 或者快捷键:ctrl+b 松开 再按d
查看当前所有会话: tmux ls
-------------------------------------------------------------------------------
接入会话: tmux attach(或者a) -t <session-name>(或者编号如0)
杀死会话:tmux kill-session -t <session-name>
-----------------------------------------------------
上面两个我一般不用,而是直接 tmux a,连接上次最后关闭的会话,然后使用快捷键 ctrl+b 松开再按 w,即展示所有窗口,再使用方向键选择需要进入的会话或窗口,如果需要关闭会话使用ctlr+d逐个关闭所有窗口
创建新窗口:ctrl +b 松开再按 c
窗口重命名:ctrl+b 松开再按 ,(逗号)
重命名会话:ctrl+b $
--------------------
窗格相关:
划分左右窗格:ctrl+b %
划分上下两个窗格:CTRL+b "
参考文章:
Linux :忘记使用nohup该如何补救 - 罗西的思考 - 博客园
Linux配置程序后台运行(前后台来回切换)_linux后台运行程序-CSDN博客
linux 如何杀死,暂停,继续一个后台进程 - wybliw - 博客园