Wall

有牆日誌嗎?

  • September 14, 2019

一種日夜執行的工具有時會將重要資訊發佈到牆上。當我睡著時,有什麼方法可以將此輸出重定向到文件?或者,牆是否保留發佈到它的消息日誌,或者有沒有辦法啟用它?

有一些wall寫入 syslog 的實現,例如http://salsa.debian.org/debian/sysvinit/blob/master/src/wall.c。在 其手冊頁中它說:

對於 wall 的每次呼叫,都會向 syslog 寫入一個通知,其中包含設施 LOG_USER 和級別 BR LOG_INFO

如果您無法控制應用程序的行為或告訴它使用logger 而不是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看到以下消息日誌:/var/log``syslogd

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

當然,請記住,每次使用其內置升級機制升級系統時,原始 /usr/bin/wall二進製文件可能會再次恢復。

引用自:https://unix.stackexchange.com/questions/541751