Skip to main content
 首页 » 操作系统

Linux下Tmux 及Screen 后台管理会话

2022年08月12日137exmyth

一、Tmux命令介绍:

Tmux (“Terminal Multiplexer”的简称), 是一款优秀的终端复用软件,类似 GNU screen,但比screen更出色。
tmux来自于OpenBSD,采用BSD授权。
Tmux 用于在一个终端窗口中运行多个终端会话。不仅如此,你还可以通过 Tmux 使终端会话运行于后台或是按需接入、断开会话,这个功能非常实用。

例:
  公司需要备份数据库时,数据量巨大,备份两三天弄不完,这时不小心关闭了终端窗口或误操作就前功尽弃了,使用Tmux会话运行命令或任务,就不用担心这些问题。

1、Tmux命令使用场景:

下班后,你需要断开ssh或关闭电脑,将运行得命令或任务放置后台运行。
关闭终端,再次打开时原终端里面的任务进程依然不会中断

2、命令使用

# 安装tmux 
yum -y install tmux 
# 默认创建一个会话,以数字命名。(不推荐) 
tmux 
# 新建会话并指定会话名称(建议制定会话名称,以便了解该会话用途) 
tmux new -s <session-name> 
# 新建会话(不指定会话名称) 
tmux new 
# 接入上一个会话 
tmux a 
# 接入指定名称的会话 
tmux a -t <session-name> 
# 断开当前会话(还可以使用快捷键:Ctrl+b,再按d) 
tmux detach 
# 关闭指定会话 
tmux kill-session -t session-name 
# 关闭除指定会话外的所有会话 
tmux kill-session -a -t session-name 
# 在会话中切换 
control+b,再按s 显示会话列表,再进行会话切换 
# 销毁所有会话并停止tmux 
tmux kill-server 

3、Tmux快捷键:

Ctrl + b 激活控制台后在输入“d”  脱离当前会话;这样可以暂时返回Shell界面,输入“tmux a -t 名称”,能够重新进入之前的会话; 
Ctrl + b 激活控制台后在输入“&”  关闭当前所有小窗口,提示确认; 
Ctrl + d 可关闭光标所在得窗口(必须是没有任务运行,方可关闭) 
Ctrl + b 激活控制台后在输入“o”  切换窗口 
Ctrl + b 激活控制台后在输入“t”  在光标处显示时间“q”退去; 
Ctrl + b 激活控制台后在输入“!”  将光标所在得窗口全屏,当eixt推出时会显示剩下得窗口; 
Ctrl + b 激活控制台后在输入“q”  查看窗口编号,直接按相应数字切换; 
Ctrl + b 激活控制台后在输入“s”  通过窗口切换到其他会话; 

4、创建多个窗口操作:

Ctrl + b 激活控制台后在输入“%”  将当前面板平分为左右两块; 
Ctrl + b 激活控制台后在输入“  ” ”  将当前面板平分为上下两块; 
Ctrl + b 激活控制台后在输入“o”  切换窗口; 
Ctrl + b 激活控制台后 + 方向键  移动光标以选择面板 

二、Screen命令

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。

语法

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>] 

参数说明:

-A  将所有的视窗都调整为目前终端机的大小。
-d<作业名称>  将指定的screen作业离线。
-h<行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r<作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S<作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或–list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

1、命令使用

# 新建一个叫<session-name>的session 
screen -S <session-name>  
# 列出当前所有的session 
screen -ls  
# 回到<session-name>这个session 
screen -r <session-name> 
# 远程detach某个session 
screen -d <session-name> 
# 结束当前session并回到<session-name>这个session 
screen -d -r <session-name> 
# 清理已经Dead的会话 
screen -wipe  
# 关闭死掉的screen 
screen -X -S [session # you want to kill] quit 
eg:screen -X -S 5984 quit 

2、screen 快捷键

C-a ? -> 显示所有键绑定信息 
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口 
C-a n -> Next,切换到下一个 window  
C-a p -> Previous,切换到前一个 window  
C-a 0..9 -> 切换到第 0..9 个 window 
Ctrl+a [Space] -> 由视窗0循序切换到视窗9 
C-a C-a -> 在两个最近使用的 window 间切换  
C-a x -> 锁住当前的 window,需用用户密码解锁 
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。  
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。 
C-a w -> 显示所有窗口列表 
C-a t -> time,显示当前时间,和系统的 load  
C-a k -> kill window,强行关闭当前的 window 
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样 
    C-b Backward,PageUp  
    C-f Forward,PageDown  
    H(大写) High,将光标移至左上角  
    L Low,将光标移至左下角  
    0 移到行首  
    $ 行末  
    w forward one word,以字为单位往前移  
    b backward one word,以字为单位往后移  
    Space 第一次按为标记区起点,第二次按为终点  
    Esc 结束 copy mode  

本文参考链接:https://bertram.blog.csdn.net/article/details/107555766