有木墙吗?

有木墙吗?

一个日夜运行的工具有时会将重要信息发布到墙上。有什么方法可以在我睡觉时将此输出重定向到文件吗?或者,wall 是否保留发布到其上的消息日志,或者是否有办法启用它?

答案1

有一些wall写入系统日志的实现,例如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。在此示例中,我将向您展示如何执行后者。首先,将现有程序重命名 wallwall.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/logsyslogd

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

当然,请记住,每次使用内置升级机制升级系统时,原始 /usr/bin/wall二进制文件都可能会再次恢复。

答案2

有一个日志记录级别将写入所有使用 wall 登录的用户

logger -p emerg 'The sky is falling in'

记录器将消息写入/var/log.对于紧急优先级消息,它还会将其发送给带有 的用户wall

相关内容