我想监控我们的任何机器何时运行关机命令,以便它可以发送电子邮件或即将重新启动/关机的通知。我认为关机运行时它可能会将广播消息转发到 syslog,但我没有看到它存储在任何日志中。有没有办法在运行此命令时记录?
[编辑] 需要澄清的是,当关机命令运行时,我的意思是当它开始正在运行(或首次广播有关关机的消息时),而不是系统实际开始关机时。因此,我希望能够捕捉到它发送此类消息的时间:系统将在 5 分钟内关闭并重新启动!
答案1
如果只想监视关机命令:
- 你可以将它包装在发送电子邮件的 shell 脚本中
- 您可以使用预加载的库来记录如下命令史努比记录器
- 您可以使用 systemtap 记录所有用于关机的 exec*()。
问题是,如果有人只是按下重置按钮,您将没有记录。为此,可靠的方法是在机器启动时进行记录。
请注意,最后的日志是在机器启动时创建的条目。
可以使用 BMC/LOM/IPMI 进行带外记录。如果您的主板集成了 BMC,或者您已安装 BMC 作为扩展卡,则可以使用此功能。
答案2
您可以修改 syslog.conf 来捕获这些消息。
例如,如果你有标准系统日志,那么行
*.* /var/log/all.log
存储所有消息。
如果你有 rsyslog(例如现代 debian),你可以在事件发生时启动一些脚本(发送电子邮件等)
答案3
我发现没有办法在关机时发送通知(在 RedHat 上)。请记住:
- 在关机期间发送的电子邮件可能会保留在邮件队列中,直到系统恢复在线
- 如果发生断电,关机期间发生的任何操作都不会发生。在这种情况下,你最好在启动过程中执行某些操作。
但是你可以在启动时使用 cron 执行操作,使用@reboot“昵称”。
因此,如果脚本 /usr/local/bin/email-on-reboot.sh 发送有关启动的电子邮件/通知,请将其添加到/etc/crontab
:
@reboot /usr/local/bin/email-on-reboot.sh