2016-11-01 9 views
2

は、現在、私の職場では、私は彼らの出力をログに記録し、バッチのリターンコードを処理し、バッチの実行を監督することになっている(bashで書かれた)「バッチランチャー」という名前のスクリプトを、持っています。別のプロセスを監督するプロセスを実装する方法は?

env $BATCH_ENV $BATCH_NAME $BATCH_OPTIONS >> $OUT_FILE 2>&1 

数日前、perlで書かれたバッチの一つはPGID(すべてのフォークの子供たちを排除するために)上のキルコールを作って、「バッチ以降:これは、現在、この「バッチ・ランチャー」内envコールを介して行われますランチャー "がPGIDを何かと共有すると、この呼び出しによっても殺されました。

どのように適切に任意のPGIDがコールを殺すことを確認する必要がありますが、完全な「バッチ・ランチャー」を残し、それが監督していたプロセスが殺されたことを報告しますか?

私は今までこの問題を解決するためにsetsid -wコマンドを聞いてきましたが、envコールと組み合わせて動作させることができませんでした。

+0

'setsid'ベースのソリューションであなたの試みは次のように正確に何を見たのですか?彼らは何らかのエラーで失敗したのでしょうか、あるいは監督者のプロセスが殺されるのを防ぐことができませんでしたか? 'execvpの:そのようなファイルやdirectory'ない出力ログに以下のメッセージで – larsks

+0

'がsetsid -wのenv ... '結果 –

答えて

0

私は、オンラインマニュアルを参照して、コンサルティングではなく、私は現在仕事システムでmanを呼び出すの愚かなミスを犯してきました。これはpageは、setsidがフラグをサポートしていると述べている7月2014日付けの私のmanページは(私はRHEL 5上で動作)1993年11月日付、および一切のフラグをサポートしていません。そのようなファイルやディレクトリエラー:何が起こった

setsidexecvpの結果として、ファイル名として-wフラグを解析しようとしていたでした。フラグを削除すると、すべてが機能します。現在、「バッチ・ランチャー」から発売されます

env $BATCH_ENV setsid $BATCH_NAME $BATCH_OPTIONS >> $OUT_FILE 2>&1 

$BATCH_NAMEのPIDにSIDとPGIDが等しく割り当てられており、「バッチ・ランチャー」を残す影響を受けていない$BATCH_NAMEのPGIDでコールを殺す:endコマンドは現在のようになります。今度は返品ステータス143(SIGTERM)を喜んで報告します。

関連する問題