screen和tmux的使用(会话管理器)

Screen

screen 是一个功能强大的命令行工具,它允许你多次开启多个连接到同一个终端会话的窗口,并且能在没有活动连接时继续后台工作。这特别适用于远程工作环境,因为即使远程连接中断,由 screen 启动的会话也能继续运行。以下是一些基本的 screen 用法:

启动新会话

创建一个新的 screen 会话:

screen

也可以为会话命名,以使其易于识别:

screen -S <session-name>

替换 <session-name> 为你所选择的任何名称。

分离和重新连接会话

分离 (detach) 是指从 screen 会话中退出并让它在后台继续运行。你可以通过在 screen 会话中按 Ctrl-a 接着按 d 来分离当前会话。

要重新连接 (reattach) 到一个已存在的 screen 会话,使用:

screen -r <session-name>

如果不记得会话名字,可以使用 screen -ls 列出所有 screen 会话,然后选择一个会话名来重新连接。

强制连接处在‘attached’状态的会话

screen -r -d session_name

列出所有会话

查看所有的 screen 会话:

screen -ls

终止会话

要结束 screen 会话,只需在会话中退出 shell 即可。通常这可以通过输入 exit 命令,或者按 Ctrl-d 来完成。如果你在 screen 会话中分离了,你需要先重新连接会话,然后再退出。

向已创建的窗口发送命令

  1. 使用 screenstuff 命令
    screen -X 命令可以发送输入到 screen 会话。如果你想把命令传递到特定窗口,可以使用 stuff 命令。以下是具体步骤:

    首先,找到目标窗口的名称或编号:

    screen -ls
    

    输出可能如下:

    12345.pts-0.hostname (Detached)
    67890.pts-1.hostname (Attached)
    

    假设我们要向会话 67890(并且这个会话中有3个窗口)中的窗口 1 发送命令:

    screen -S 67890 -p 1 -X stuff 'your_command_here\n'
    

    其中:

    • -S 67890 指定会话 ID。
    • -p 1 指定窗口编号。
    • -X stuff 'your_command_here\n' 发送命令到窗口,并在命令末尾添加 \n 以模拟回车键。
示例
  1. 向特定窗口发送命令

    # 发送命令到会话 67890 的窗口 1
    screen -S 67890 -p 1 -X stuff 'ls -l\n'
    
注意
  • stuff 会直接把字符串发送到指定窗口的终端,因此要确保命令后面加上 \n 来模拟回车。
  • 一些特殊字符可能需要转义,例如双引号、反斜杠等。

在会话中创建新窗口

screen 会话中,你可以打开多个窗口。要创建一个新窗口,可以在 screen 会话中按 Ctrl-a 然后按 c

在窗口间切换

screen 会话的窗口间切换,可以用 Ctrl-a 然后输入窗口编号或按 n 切换到下一个窗口,按 p 切换到上一个窗口。

分屏显示

screen 对于分屏同样支持。可以创建水平分屏或者垂直分屏:

  • 水平分屏:Ctrl-a 然后 S (大写的 ‘s’)
  • 垂直分屏:Ctrl-a 然后 | (需要 screen 支持垂直分割)

然后你可以使用 Ctrl-a 和方向键来在分割出的不同区域间切换。

复制和粘贴

screen 提供了一个简易的复制和粘贴机制:

  • 进入复制模式:Ctrl-a 然后 [
  • 使用方向键移动光标来选择文本
  • 开始选择文本时按下 空格键,然后移动光标来选择文本区域
  • 完成选择后再次按 空格键;复制的文本将被保存到 screen 的缓冲区
  • 粘贴缓冲区中的文本到 screen 中:Ctrl-a 然后 ]

定制化和配置

screen 允许通过 .screenrc 文件进行定制化。用户可以在自己的家目录下创建这个文件,以自定义键绑定、默认shell等设置。

以上是 screen 的一些基本用法概览。screen 是一个非常强大的工具,拥有更多的高级功能,你可以通过阅读官方文档或者 man screen 来了解更多。

Tmux

在这里插入图片描述
在这里插入图片描述

退出会话

tmux中,关闭一个会话(session)有几种方式,这取决于你当前处于会话内还是在会话之外。这里给出几种不同情况下关闭tmux会话的方法。

当你在会话内部:

  1. 退出所有窗格:在会话内的所有窗格(panes)中执行退出命令(如exit或按Ctrl+D),当最后一个窗格被关闭时,tmux会话也会随之结束。

  2. 使用tmux命令:按下Ctrl+b,然后输入:进入命令模式,输入kill-session命令后按Enter键。这会立即关闭当前会话。

当你在会话外部:

  1. 通过会话名称:如果你不在tmux会话内部但知道要关闭的会话名称,可以在终端中使用以下命令关闭指定的会话:

    tmux kill-session -t 会话名称
    

    这里,会话名称是你想关闭的tmux会话的名字。

  2. 通过会话ID:同样地,如果你知道会话的ID(在tmux里可以通过tmux list-sessions命令查看),也可以使用会话ID来指定要关闭的会话:

    tmux kill-session -t $会话ID
    

    其中,$会话ID应替换为实际的会话ID,例如$0

批量关闭会话:

  • 如果你想关闭所有tmux会话,可以使用kill-server命令。这个命令会结束tmux服务器及其所有会话,但需要谨慎使用,因为它会关闭你当前打开的所有tmux会话:
    tmux kill-server
    

请记住,关闭会话会导致其中所有窗格和窗口中正在运行的进程被终止。如果有任何重要的工作仍在进行中,请确保先适当保存或完成这些工作,再执行关闭操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值