【问题标题】:Bash, server exited unexpectedly after killing tmux processBash,杀死 tmux 进程后服务器意外退出
【发布时间】:2021-07-31 21:09:33
【问题描述】:

我在 bash 中编写了一个脚本来加载自定义 tmux 会话。

我注意到由于 windows 有一个名称,我不能再次使用该脚本,因为 windows 名称已经存在。与其使用一些随机数作为窗口的名称,或者根本不给它命名,我认为杀死该进程会更容易。

#!/bin/sh

pkill -f tmux

tmux new-session -s "Tab 1"\; \
  split-window -v \; \
  split-window -h \;  \
  split-window -v \;  

所以,当我使用脚本时,它会在创建 tmux 会话之前终止 tmux 进程。我注意到如果 tmux 会话是打开的,它会关闭它,但另一个不会打开。它会向我抛出此消息。

server exited unexpectedly

所以我必须使用该命令两次才能使其工作。

有没有什么方法可以一次性执行脚本杀死当前会话并打开一个新会话?谢谢!

【问题讨论】:

  • 使用tmux new-session -A -s "Tab 1"会有所帮助吗,它“如果会话名称已经存在,则新会话的行为类似于附加会话......”?

标签: bash shell tmux


【解决方案1】:

我不知道这是否是最好的方法,但通过在man tmux 中查看,我找到了tmux detach-client 命令:

如果绑定到一个键,则分离当前客户端,使用 -t 指定的客户端,或当前附加到的所有客户端 -s 指定的会话。 -a 选项会杀死除 -t 指定的客户端以外的所有用户。如果给出 -P,则发送 SIGHUP 到 客户端的父进程,通常会导致它退出。使用-E,运行shell-command替换客户端。

这里有用的是-E 选项。我们可以使用它来终止当前会话并使用您想要的选项启动一个新会话。

单线解决方案(如果您在 tmux 中):

tmux detach-client -E "tmux kill-session; tmux new-session -s 'Tab 1'\; split-window -v\; \; split-window -v \; split-window -h"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多