2

かなり大規模なネットワーク上でさまざまな統計情報を収集するcronジョブがいくつかあります。これらのcronジョブのほとんどは、十分に監視されていません。これらのジョブの出力をパイプでつなげることができるperlスクリプトを書きたかったのです。

5 * * * * collectstats.pl 2>&1 1>/dev/null | scriptwatcher.pl

アイデアは、collectstats.plからのstdoutが破棄され、stderrがscriptwatcher.plにパイプされるというものです。この2番目のスクリプトは、エラーが発生した場合に適切なアクションを実行できます。ほとんどの場合、私にメールを送信してください。クイックテストでは、これは機能していますが、scriptwatcherでは、エラーを送信しているスクリプトの名前を知る必要があります。そのほんの少しの情報で、私がやりたいことはすべて可能になります。

また、stdoutをcollectstatsから別のスクリプトに同時にパイプすることは可能ですか?つまり、1つのスクリプトに対して2つのパイプですか?

乾杯

4

2 に答える 2

4

振り返って実行します。

5 * * * * scriptwatcher.pl collectstats.pl any extra args

そして、scriptwatcher.plにリダイレクトを処理させ、その引数で指定されたスクリプトを実行させます。

于 2013-01-17T05:22:29.007 に答える
1

次の行を使用します。

5 * * * * collectstats.pl 2>&1 1>/dev/null | scriptwatcher.pl collectstats.pl

つまり、スクリプトウォッチャーにどのスクリプトを監視しているかを伝えます。

あるいは、ysthが彼の回答で示唆しているように、scriptwatcher監視するはずのスクリプトを実行しているなど、他のコマンドを実行できます。これにより、スクリプトに2回名前を付ける必要がなくなります。繰り返しが問題になる場合は、ysthの答えを選択してください。nohupsu

あなたの補助的な質問のために:

stdoutをcollectstatsから別のスクリプトに同時にパイプすることは可能ですか?

peeteeと並行してp、ファイルの代わりにプロセス(したがって)を使用してコマンドを検索します。(注意:「peecommand」は適切なGoogle検索用語ではありませんが、私が指すURLは、それに関する詳細情報とコードを見つけることができる場所への直接リンクなどを含むSO回答です。)

于 2013-01-17T22:31:53.320 に答える