は、現在、私の職場では、私は彼らの出力をログに記録し、バッチのリターンコードを処理し、バッチの実行を監督することになっている(bash
で書かれた)「バッチランチャー」という名前のスクリプトを、持っています。別のプロセスを監督するプロセスを実装する方法は?
env $BATCH_ENV $BATCH_NAME $BATCH_OPTIONS >> $OUT_FILE 2>&1
数日前、perl
で書かれたバッチの一つはPGID(すべてのフォークの子供たちを排除するために)上のキルコールを作って、「バッチ以降:これは、現在、この「バッチ・ランチャー」内env
コールを介して行われますランチャー "がPGIDを何かと共有すると、この呼び出しによっても殺されました。
どのように適切に任意のPGIDがコールを殺すことを確認する必要がありますが、完全な「バッチ・ランチャー」を残し、それが監督していたプロセスが殺されたことを報告しますか?
私は今までこの問題を解決するためにsetsid -w
コマンドを聞いてきましたが、env
コールと組み合わせて動作させることができませんでした。
'setsid'ベースのソリューションであなたの試みは次のように正確に何を見たのですか?彼らは何らかのエラーで失敗したのでしょうか、あるいは監督者のプロセスが殺されるのを防ぐことができませんでしたか? 'execvpの:そのようなファイルやdirectory'ない出力ログに以下のメッセージで – larsks
'がsetsid -wのenv ... '結果 –