
特定の問題:
郵便集配員フラットファイル内のメーリングリスト購読者を同期するスクリプトが付属しています(同期メンバー(8))。
台本がうまく守られていません。沈黙の法則。たとえば、何もしない場合(たとえば、現在の購読者とフラットファイルが同じ場合)、「Nothing to do」を印刷します。到着するstdout
。
このプログラムを数分ごとに実行すると、すべての出力がログサーバーに書き込まれます(システムログ)その後、毎日ログを含む電子メールを送信します。これには多くの場合、役に立たないメッセージがたくさん含まれています。
この問題を解決するにはいくつかの方法があり、どの方法が最も適切かを知りたいです。
stdout
にパイプを接続します/dev/null
。- 使用rsyslogd フィルタリング特に、これらのメッセージをフィルタリングします。
sync_members
サイレントの法則に従うようにソースコードを修正してください。- ソースコードをコピーし
sync_members
、コピーを修正し、これからそのコピーを使用してください。
各方法は所望の結果を達成するが、各方法には欠点がある。
- どの時点で興味深いことが起こったらどうなりますか
stdout
? - かなりそうだと思います。「きれいではない」そして「ハッカー」解決策、私は沈黙の法則に従わないプログラムがたくさんあるとあえて申し上げます。
- アップデートがあるとどうなりますか?
- 3と同じです。
私はオプション2を選択していますが、システムで誤動作しているすべてのプログラムに対してこれを行う必要がある場合...
どう思いますか?賛成または反対する他のオプションや主張はありますか?この状況のベストプラクティスはありますか? (この問題は新しいものではないと言うことができますか?)
答え1
オプション5はありません。出力をリダイレクトするラッパースクリプトを作成し、sync_members
「何もしないこと」を確認してください。
適切な終了コードチェックを使用すると、操作が正しく実行される可能性があります。比較的アップグレードは安全です。 「なし」メッセージが変更されない限り、スクリプトを維持する必要はありません。
このスクリプトでエラー条件を処理する方法を決定できます(つまり、cat
ログファイルを処理するか、より興味深い操作を実行します)。
答え2
2つの提案:
mailman
開発者が誰にとってもバグを修正できるように、バグレポートを送信してください。通話をThat
synch_members
に変更すると、synch_members | egrep -v "Nothing to do."
「やること」が削除されます。情報。
答え3
「何もしない」が変更されない場合(または正規表現に縮小できる場合)、次のようにgrepを使用できます。
grep -v "Nothing to do" *.log
問題を解決するためにこれからできることがたくさんあります。
- 上記のコマンドの出力をリダイレクトして、新しい「自動」ログを作成します。
- 上記のコマンドに基づいて関数とエイリアスを定義することで、対話型セッションでショートカットとして使用できます(環境変数として「何もしない」を定義することもできます)。
cron
定期的にこれらのコマンドを自動的に実行するジョブを定義します。
基本的なUnixツールと最新のシェルを使ってできることがたくさんあります。まだソースコードの修正を決めるには早いと思います。簡単に保つことで、多くの時間を無駄にすることを避けることができます。