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 101

Tmux 使用教程 - 阮一峰的网络日志

Tmux使用手册 | louis blog

linux 如何杀死,暂停,继续一个后台进程 - wybliw - 博客园

 

posted @ 2024-05-20 16:23  dirgo  阅读(115)  评论(0编辑  收藏  举报