昼と夜で動作するツールは時々重要な情報を壁に投稿します。睡眠中にこの出力をファイルにリダイレクトする方法はありますか?または、壁に投稿されたメッセージログをアーカイブしますか、それを有効にする方法はありますか?
ベストアンサー1
wall
システムログに書き込むいくつかの実装があります。http://salsa.debian.org/debian/sysvinit/blob/master/src/wall.c。存在する
マンページそれは言う:
Wall の各呼び出しに対して、LOG_USER 機能と BR LOG_INFO レベルを使用して、syslog に通知が記録されます。
アプリケーションの動作を制御できないlogger
場合、または代わりに書き込みを使用するように指示できない場合は、通常のコマンドを実行してwriteを使用するラッパーをwall
作成できます。新しいディレクトリにこのラッパーを作成して新しいディレクトリに追加したら、新しい設定でプログラムを再起動できます。特にプログラムを再起動できない場合は、手順に十分な権限がある場合は、誰でもシステムを交換できます。この例では、後者の実行方法を示します。まず、既存のプログラムの名前を次のように変更します。wall
wall
logger
syslog
$PATH
wall
$PATH
wall
wall
wall.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/log
syslogd
Sep 14 22:34:43 comp ja: wall was ran with the following options: test message, result: 0
もちろん、組み込みのアップグレードメカニズムを使用してシステムをアップグレードするたびに元の
/usr/bin/wall
バイナリが復元されることに注意してください。