子tmuxプロセスでトラップを使用する方法は?

子tmuxプロセスでトラップを使用する方法は?

子tmuxプロセスが終了したら、関数を実行したいと思います。

次のスクリプトを考えてみましょう。

#!/bin/bash

function foo
{
  echo "foo exit"
}

trap foo SIGHUP

tmux

このスクリプトはtmuxを起動します。次に、tmuxセッション内で次を実行します。

$ tmux kill-session

その後、tmuxが閉じられ、次のようになります。

[exited]

関数がfoo呼び出されませんでした。親プロセスがSIGHUP信号を受信して​​いないためです。

foo終了時にこの機能を実行したいです。tmuxこの目標をどのように達成できますか?

ベストアンサー1

信号をに置き換える必要がありますSIGCHLD

trap foo SIGCHLD

分岐した子プロセスが停止/終了すると、この信号は親プロセスに送信されます。前述のように、SIGHUP現在のプロセス/スクリプトにのみ影響します。

おすすめ記事