如何终止 tmux 会话并处理它产生的会话

Joh*_*ino 15 tmux byobu

我注意到我有一个正在运行的进程,我认为这是因为我在使用 tmux 的 byobu 中初始化了该进程。

ps aux | grep sidekiq
1000     13786  0.0  0.0   8108   900 pts/4    S+   11:27   0:00 grep sidekiq
Run Code Online (Sandbox Code Playgroud)

我有一个名为“3”的 tmux 会话。正如你在下面看到的:

$ byobu   

Byobu sessions...

  1. tmux: 3: 1 windows (created Wed Aug 28 10:57:54 2013) [229x84] (attached)
  2. tmux: daemon: 1 windows (created Thu Jul 11 12:59:09 2013) [127x83]
  3. tmux: juggernaut: 1 windows (created Thu Jul 11 12:54:08 2013) [80x23]
Run Code Online (Sandbox Code Playgroud)

我想退出该会话并结束该会话创建的所有正在运行的进程。

pet*_*rph 17

tmux kill-session [-t session_name]
Run Code Online (Sandbox Code Playgroud)

虚拟终端中的进程应该收到 SIGHUP。

  • 但 SIGHUP 不会杀死进程。它通常*respanws*他们。 (8认同)

小智 6

这也困扰着我,所以我为此编写了一个 tmux 插件。它并不完美,但可以很容易地扩展到知道如何在退出 tmux 之前安全地终止大多数类型的进程:tmux-safekill


小智 5

也许这不是最优雅的解决方案,但可以满足您的要求:

tmux list-panes -s -F "#{pane_pid} #{pane_current_command}" | grep -v tmux | awk '{print $1}' | xargs kill -9
Run Code Online (Sandbox Code Playgroud)

如果您在 tmux-session 中运行它,它将终止它产生的所有进程,然后您可以使用exit.