在后台使用命令启动 tmux,当 tmux 停止运行时不停止该命令

Nor*_*tfi 5 shell bash tmux

所以,我想通过 tmux 启动一个 shell 命令,但在后台并与所述 tmux 会话分离......所以我这样做:

tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession
Run Code Online (Sandbox Code Playgroud)

这有效。但现在,如果我想让 tmux 在与上述会话分离后停止,我需要执行以下操作:

这:

tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession \; kill-session -t myprogramsession
Run Code Online (Sandbox Code Playgroud)

或这个:

tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession && pkill tmux
Run Code Online (Sandbox Code Playgroud)

虽然这两种方法(一种 usingpkillkill-sessionfrom tmux)乍一看似乎都有效,但我注意到与第一次尝试这样做相比,它们都阻止了通过停留在后台启动的进程/脚本nohup减去有关 stop 的部分tmux) 。

我怎样才能tmux(基于上面的示例)在会话上(在后台)启动 shell 命令,将其分离,然后在tmuxshell 命令仍在后台运行时完全停止?

PS:我确实检查了这篇文章这篇文章,但未能找到解决方案。

Nor*_*tfi 0

这看起来比我想象的要容易:

tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession && sleep 1 && pkill tmux
Run Code Online (Sandbox Code Playgroud)

如果在进来sleep之前添加a ,那么这项工作就可以工作。但是,可能不是最好的解决方案。pkill