1

たとえば、解析する perl スクリプトを作成しています/var/log/syslog

ログに特定のイベントが表示されると、perl スクリプトはさらに後続のタスクをトリガーします。ログは、この投稿のアドバイスに従って解析されます。

コマンド ライン: ログ ファイルを監視し、データベースにデータを追加する

私が信じているのは、パイプの使用です。

ここで、このスクリプトをバックグラウンドで永久に実行したいと考えています。

これは私にはデーモンのように聞こえます。次の質問で参照されているデーモン プログラムは理想的です。

LinuxでPerlスクリプトをシステムデーモンとして実行するにはどうすればよいですか?

しかし、この投稿から、デーモンが開いているファイル ハンドルを持っていないことは明らかです。では、ログファイルを監視するデーモン、またはデーモンになる perl スクリプトを作成するにはどうすればよいでしょうか?

4

2 に答える 2

2

あなたが欲しいのはデーモンのようです。その場合、参照する 2 番目の投稿に記載されているアドバイスがベスト プラクティスです。ただし、フォークの複雑さを取り除くデーモンツールなどの他のオプションがあります。

デーモンはファイルハンドルを持つことができますが、STDIN、STDOUT、および STDERRR を閉じる必要があります。これの多くは、*nix システムでの fork の動作に関係しています。2 番目のフォークの後にパイプ ファイルハンドルを開くだけで、問題は発生しません。

于 2012-09-16T00:04:09.223 に答える
2

これはあなたの質問には答えませんが、あなたに適しているかどうかを検討する別の方法です。

rsyslogは、特定のメッセージがログに記録されたときにプログラムを実行できます

トリガーをセットアップするためのフィルター条件、スクリプトに渡される出力をフォーマットするためのテンプレート、および実行可能ファイルを指定するためのアクション > シェル実行を参照してください。

セキュリティへの影響と、外部プログラムの実行中に ryslog がブロックされることを確認してください。ただし、スクリプトが確実にすばやく実行される場合は、オプションになる可能性があります。

于 2012-09-15T02:59:48.630 に答える