우리 회사에는 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
/script/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을 사용하는 경우 스크립트에 a를 추가하여 sudo sendmail -qf
대기열을 플러시하거나 주석에서 언급한 대로 a postfix flush
. 해당 항목을 추가하거나 After=sendmail.service
접미사를 추가하면 대기열 처리 데몬이 계속 실행되고 있음을 확인할 수도 있습니다.