このコマンドを使用してバックグラウンドでtmuxを起動し、tmuxが実行を停止したときにコマンドを停止しないでください。

このコマンドを使用してバックグラウンドでtmuxを起動し、tmuxが実行を停止したときにコマンドを停止しないでください。

だからtmuxを介してシェルコマンドを実行したいのですが、バックグラウンドで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

一見すると、2つの方法(pkillおよびkill-sessionfromを使用する方法の1つ)が機能しているように見えましたが、ブロックされたプロセス/スクリプトがすべてfromを介して開始されたことを確認しました。tmuxnohup滞在するバックグラウンドでこれを行った最初の試みと比較します(停止の部分を除くtmux)。

tmux(上記の例に基づいて)セッション(バックグラウンド)でシェルコマンドを開始および切断し、シェルtmuxコマンドがバックグラウンドで実行され続けながら完全に停止するにはどうすればよいですか?

PS:確認しました。これそしてこれ投稿しましたが、そこで解決策が見つかりませんでした。

ベストアンサー1

思ったより簡単に見えますね。

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

sleep入る前にを追加すると機能しますpkill。しかし、おそらく最善の解決策ではないでしょう。

おすすめ記事