木の壁がありますか?

木の壁がありますか?

昼と夜で動作するツールは時々重要な情報を壁に投稿します。睡眠中にこの出力をファイルにリダイレクトする方法はありますか?または、壁に投稿されたメッセージログをアーカイブしますか、それを有効にする方法はありますか?

ベストアンサー1

wallシステムログに書き込むいくつかの実装があります。http://salsa.debian.org/debian/sysvinit/blob/master/src/wall.c。存在する マンページそれは言う:

Wall の各呼び出しに対して、LOG_USER 機能と BR LOG_INFO レベルを使用して、syslog に通知が記録されます。

アプリケーションの動作を制御できないlogger 場合、または代わりに書き込みを使用するように指示できない場合は、通常のコマンドを実行してwriteを使用するラッパーをwall作成できます。新しいディレクトリにこのラッパーを作成して新しいディレクトリに追加したら、新しい設定でプログラムを再起動できます。特にプログラムを再起動できない場合は、手順に十分な権限がある場合は、誰でもシステムを交換できます。この例では、後者の実行方法を示します。まず、既存のプログラムの名前を次のように変更します。wallwallloggersyslog$PATHwall$PATHwallwallwall.orig

$ command -v wall
/usr/bin/wall
$ sudo mv /usr/bin/wall /usr/bin/wall.orig

新しい/usr/bin/wallラッパースクリプトは次のとおりです。

#!/usr/bin/env sh

# wall wrapper - run wall commands with specified arguments and write
# a notification to syslog

wall.orig "$@"
logger "wall was ran with the following options: $*, result: $?"

実行可能にすることを忘れないでください。

sudo chmod +x /usr/bin/wall

通常のように使用してくださいwall

$ wall "test message"

Broadcast message from ja@comp (pts/14) (Sat Sep 14 22:34:43 2019):

test message

ジョブが実行されている場合は、loggerメッセージがルーティングされるsyslogdファイルの1つに次のメッセージログを表示する必要があります。/var/logsyslogd

Sep 14 22:34:43 comp ja: wall was ran with the following options: test message, result: 0

もちろん、組み込みのアップグレードメカニズムを使用してシステムをアップグレードするたびに元の /usr/bin/wallバイナリが復元されることに注意してください。

おすすめ記事