我的公司有 SLES 12 SP1 服务器。我做了两个单独的配置,以便在服务器重新启动时提醒我,更明确地说,是在服务器关闭时发送一封电子邮件,在服务器启动时发送另一封电子邮件。配置为在启动期间发送电子邮件的警报工作正常。
但不幸的是,我不是在关闭过程中而是在服务器启动后收到关闭警报。有时它甚至不会生成。
我应该在哪里进行更改以在重新启动或关闭期间立即发送电子邮件。
脚本。
/etc/systemd/system/ShutDownMail.service
Description=Sending Alert Emails on System shutdown.
Requires=network.target
Before=shutdown.target reboot.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/Scripts/BootMail.sh shutdown
[Install]
WantedBy=multi-user.target
/脚本/BootMail.sh
#! /bin/sh
EMAIL="[email protected]"
SUBJECT="[$HOSTNAME] - System $1"
if [ "$1" = startup ]
then
ACTION="started successfully at"
else
ACTION="is shutting down. The Shutdown process started at"
fi
BODY="This is an automated message to notify you that %s %s.\nDate and Time: %s\n"
printf "$BODY" "$HOSTNAME" "$ACTION" "$(date)" | mail -s "${SUBJECT}" "${EMAIL}"
我在上午 10:59 收到警报电子邮件。请注意,有时不会生成关机警报电子邮件。发送电子邮件之前,电子邮件进程可能会被终止
这些是执行 init 6 时的电子邮件。
答案1
大多数邮件程序只是将消息放入队列中,然后由一个单独的进程检查队列并发送邮件。因此,您还需要触发该过程。例如,如果使用 sendmail,请在脚本中添加 asudo sendmail -qf
来尝试刷新队列,或者如您在注释中所说的 a postfix flush
。也许添加After=sendmail.service
或后缀等效项也将确保队列处理守护进程仍在运行。