Wall
有牆日誌嗎?
一種日夜執行的工具有時會將重要資訊發佈到牆上。當我睡著時,有什麼方法可以將此輸出重定向到文件?或者,牆是否保留發佈到它的消息日誌,或者有沒有辦法啟用它?
有一些
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
二進製文件可能會再次恢復。