Bash
當 tmux 停止執行時,在後台使用命令啟動 tmux,而不停止所述命令
所以,我想通過 tmux 啟動一個 shell 命令,但是在後台並從所說的 tmux 會話中分離……所以我這樣做:
tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession
這行得通。但是現在,如果我想讓 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
或這個:
tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession && pkill tmux
雖然這兩種方法(一個 using
pkill
和kill-session
fromtmux
)乍一看似乎都有效,但我注意到與第一次嘗試這樣做相比,兩者都阻止了通過啟動的程序/腳本nohup
留在後台(減去關於 stop 的部分tmux
) .我如何
tmux
(基於上面的範例)在會話中(在後台)啟動 shell 命令,分離它,然後tmux
在 shell 命令仍在後台執行時完全停止?
這看起來比我想像的要容易:
tmux new-session -A -s myprogramsession \; send -t myprogramsession "nohup /usr/bin/myscript.sh &>/dev/null &" ENTER \; detach -s myprogramsession && sleep 1 && pkill tmux
如果 a
sleep
之前添加了這項工作pkill
。但是可能不是最好的解決方案。