如何终止tmux会话并生成它


13

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

ps aux | grep sidekiq
1000     13786  0.0  0.0   8108   900 pts/4    S+   11:27   0:00 grep sidekiq

我有一个名为“ 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]

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


您可以粘贴'ps -ef |的输出吗?grep byobu'和'ps -ef | grep tmux'?
Dustin Kirkland

Answers:


15
tmux kill-session [-t session_name]

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


6
但是SIGHUP不会终止进程。通常会重新显示它们。
Andrea Pavoni 2014年

1
取决于您所讨论的过程。某些守护程序确实确实将SIGHUP用作重新初始化(重新读取配置文件等)的信号,但是这些守护程序通常会脱离进程组和控制终端,因此必须被认为是独立的。交互式应用程序通常退出是因为不处理信号,或者是因为失去了终端类的交互性。
彼得2014年

6

这也困扰着我,所以我为此写了一个tmux插件。它不是完美的,但是可以很容易地扩展以了解如何在退出tmux之前安全地杀死大多数进程:tmux-safekill


4

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

tmux list-panes -s -F "#{pane_pid} #{pane_current_command}" | grep -v tmux | awk '{print $1}' | xargs kill -9

如果在tmux会话中运行此命令,它将杀死它产生的所有进程,然后可以使用退出tmux exit


1

(免责声明:我是初学者)该脚本终止所有窗格/窗口some_session并退出:

#!/usr/bin/env bash

session="some_name"

echo about to kill ${session}, ok?
read -n 1 -s -r -p "Press key..."
echo 

sessiontest=`tmux ls | grep ${session}`

if [ "${sessiontest}" == "" ]; 
then
        echo no running session ${session}
else        
        for name in `tmux list-windows -F '#{window_name}' -t ${session}` ; do 

        tmux select-window -n

        for pane in `tmux list-panes -F '#{pane_id}' -t ${session}` ; do 
        tmux send-keys -t $pane C-c
        # send SIGINT to all panes in selected window
        echo ${session}:$name.${pane//%}
        done

        for pane in `tmux list-panes -F '#{pane_pid}' -t ${session}` ; do 
        kill -TERM ${pane}
        # terminate pane
        done

        done 
fi

echo list-sessions:
tmux list-sessions
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.