我想在系统关机到电子邮件ID时发送一封电子邮件。 我有CentOS 6.4。 以下是我的脚本。
cat /ect/init.d/sendshtmail #!/bin/bash EMAIL="example@example.com" SHUTDOWNSUBJECT="["`hostname`"] - System Shutdown" SHUTDOWNBODY="This is an automated message to notify you that "`hostname`" is shutting down. LOCKFILE=/var/lock/subsys/SystemEmail echo "${SHUTDOWNBODY}" | mutt -s "${SHUTDOWNSUBJECT}" ${EMAIL}
它有适当的权限。 当手动运行它完美的工作。 我刚刚将它链接到/etc/rc0.d/文件夹。 通过下面的命令发出。
ln -s /etc/init.d/sendshtmail /etc/rc0.d/K00sendshtmail
但脚本在关机期间不发送任何电子邮件。 提前致谢。
尝试为您的脚本设置可执行权限。 有时你需要这样做来激活它。
chmod 755 /etc/init.d/sendshtmail
也尝试为您的命令使用绝对路径,同时引用另一个变量。
echo "${SHUTDOWNBODY}" | /usr/bin/mutt -s "${SHUTDOWNSUBJECT}" "${EMAIL}"
另一个尝试是将您的用户切换到您当前的用户,例如
echo "${SHUTDOWNBODY}" | su -l -c "/usr/bin/mutt -s \"${SHUTDOWNSUBJECT}\" \"${EMAIL}\"" yourusername
将你的shell脚本放在/etc/init.d中,并且带有可执行权限,符号链接名应该以K ##开头。 如果要在关闭后立即执行脚本,请使用K00scriptname命名。 开始的脚本将会按照升序先执行K,然后用S脚本执行。
ln -s /etc/init.d/script /etc/rc0.d/K00scriptname
关机命令会发送停止信号给脚本,你的脚本(K00scriptname)应该有停止的功能例如
stop() { echo "executing scriptname" "Your script logic" } case "$1" in stop) stop ;; esac
最重要的是,只有在/ var / lock / subsys文件夹中存在锁定文件时才会执行K00scriptname,因此请执行“touch / var / lock / subsys / scriptname”,然后通过关闭进行检查。
ln -s /etc/init.d/sendshtmail /etc/rc0.d/S01sendshtmail
符号链接的名字应该以一个S开始(杀死K)
两位数字指定脚本执行的顺序,最低编号是首先执行的。