我有以下脚本来启动和设置基于我的开发环境的tmux:
#!/bin/bash
ENV="Test"
TMUX_SESSION="${ENV}LogMonSes"
TMUX_WINDOW="${ENV}LogMonWin"
tmux new-session -d -n "$TMUX_WINDOW" -s "$TMUX_SESSION" "ssh server1 tail -F /var/log/tomcat/application.log"
tmux split-window -v "ssh server2 sudo tail -F /var/log/postgresql/postgresql.log"
tmux attach-session -d -t "$TMUX_SESSION"
当我想退出tmux时,我按下Control-C来杀死尾巴。这似乎关闭了窗格但不会终止尾部进程。如果我重新登录服务器,我会看到一堆尚未被杀死的尾程,我不得不手动完成。关于如何让Control-C杀死尾部进程的任何想法?
答案 0 :(得分:2)
“问题”与ssh有关 - 而不是tmux。
请参阅Why does my remote process still run after killing an ssh session?
将-t
添加到ssh,现在一切正常:
tmux new-session -d -n "$TMUX_WINDOW" -s "$TMUX_SESSION" "ssh -t server1 tail -F /var/log/tomcat/application.log"
tmux split-window -v "ssh -t server2 sudo tail -F /var/log/postgresql/postgresql.log"
tmux attach-session -d -t "$TMUX_SESSION"