サブプロセスPIDタイムアウト

サブプロセスPIDタイムアウト

timeout私は与えられた時間内にコマンド(例えば)を実行するためにbashスクリプトでこのユーティリティを使用していますtimeout -s SIGINT 500s ./my_script。プロセスがmyscriptどのくらいのCP​​U /メモリを使用しているかを確認するために、プロセスを監視したい(たとえば、htop -p <pid>コマンドを使用)。

プロセスがバックグラウンドで開始されると(を使用して&)変数を検索して、プログラムで対応するpidを取得できることを知っています$!。問題は、タイムアウトにより新しいサブプロセスが生成され、$!変数を使用してmyscriptのpidではなく「timeoutのpid」を取得することです。

タイムアウトによって生成されたサブプロセスのpidを取得する方法は?

答え1

timeoutスクリプトを開始する機会を与えて、次psの親プロセスを尋ねますtimeout

timeout -s SIGINT 500s ./my_script &
bgpid=$!
sleep 1
p=$(ps -o pid= --ppid "$bgpid")
echo The pid you want is: "$p"

関連情報