如何从(Ubuntu)CLI杀死所有tmux会话(或至少多个会话)?

执行ps aux | grep tmux时,我会看到3个进程:

UU      2970  0.0  0.0  19556  1228 pts/0    S+   02:48   0:00 tmux
UU      3445  0.0  0.0  12944   988 pts/5    S+   03:31   0:00 grep --color=auto tmux
UU     27557  0.0  0.2  29788  4840 ?        Ss   Jan04   0:02 tmux


我怎么能一次杀死所有这些(或至少选择性地杀死其中一些?)?

#1 楼

您可以使用tmux kill-server干净优雅地杀死所有tmux打开的会话(和服务器)。

如果您要保留在tmux会话中,请使用tmux kill-session -a关闭所有其他会话。

要关闭特定会话,请使用tmux list-sessions标识要终止的会话,然后使用tmux kill-session -t targetSession终止该特定会话。 。

希望对您有所帮助。

评论


ps aux | tmux kill-server之后的grep tmux仍然显示tmux进程... pkill -f tmux与我的回答相同。你能解释一下吗?谢谢,

–user423047
17年5月5日在6:20

@Benia您确定您不只是看到grep tmux进程(包含在原始问题的ps输出中)吗?

–钢驾驶员
17年5月5日在13:45

如果发布ps aux | grep blablablawhichdoesntexist它将始终显示至少一行,对应于grep blablablathatdoesntexist命令。

– dgonzalez
17年5月5日在14:14

您是否缺少-t标志,因为没有设置-t标志来终止特定会话,它会显示错误。用法:kill-session [-a] [-t target-session]

– 1rq3fea324wre
17年11月1日在3:03



tmux ls曾经很痛苦grep:|切-d。 -f1 | awk'{print substr($ 1,0,length($ 1)-1)}'| | | xargs杀死

–地板
18年2月1日在14:35

#2 楼

我可以使用以下命令杀死所有这些进程:

pkill -f tmux


它杀死具有匹配名称(tmux)的所有进程(完整列表)。


新手注意:这种方法可以帮助您杀死其他匹配名称的所有过程。

#3 楼

这将列出并杀死所有会话:

tmux list-sessions | awk 'BEGIN{FS=":"}{print }' | xargs -n 1 tmux kill-session -t


#4 楼

给出:
# tmux ls
session-0a: 1 windows (created Sat Dec  5 02:31:35 2020) [117x30]
session-84: 1 windows (created Sat Dec  5 01:55:18 2020) [190x47] (attached)
session-b3: 1 windows (created Sat Dec  5 03:23:44 2020) [94x13]
session-b2: 1 windows (created Sat Dec  5 02:45:00 2020) [104x14]
session-ae: 1 windows (created Sat Dec  5 01:55:18 2020) [190x47] (attached)

这将杀死所有未被某人附加的会话:
tmux list-sessions | grep -v attached | awk 'BEGIN{FS=":"}{print }' | xargs -n 1 tmux kill-session -t || echo No sessions to kill

参考文献:

https://stackoverflow.com/questions/ 10411616 / grep-regex-not- contains-string
https://unix.stackexchange.com/questions/33049/how-to-check-if-a-pipe-is-empty-and-run-a数据是否存在命令
如何从CLI终止所有tmux会话(或至少多个会话)?