我正在寻找 Linux 脚本(不是 inotify 工具或任何其他实用程序),只要文件内容发生更改,它就会通过电子邮件通知我。我通过谷歌管理了示例脚本,但我必须手动运行它,并且它不会触发任何电子邮件
[[ -z `find /path/to/file -mmin -60` ]]
if [ $? -eq 0 ]
then
echo -e " /path/to/file nothing has changed"
else
mail -s "/path/to/file has been changed" mailid
fi
答案1
一旦您有了一个可以执行您想要执行的操作的脚本,请将脚本添加到您的 cron 表(或crontab
),该作业将以您喜欢的任何频率运行。所以:
#!/bin/bash
if ! [[ -z $(find /path/to/file -mmin 60) ]]; then
# The file was changed, so:
echo -e "The hash is:\n$(md5sum /path/to/file)" | mail -s "/file has changed on $(hostname -s) [email protected]"
else
# If this is in the crontab, remove this else stanza; cron
# jobs should not write to standard output, lest that output
# be sent to the local mailer daemon to drop it into the owner's
# mailbox.
echo "No changes to /path/to/file detected."
fi
答案2
但我必须手动运行它
真正重要的是您需要多长时间收到电子邮件通知。如果不需要非常快,那么 cron 作业就足够了。要么在其他地方捕获文件修改时间并比较该值,要么使用“find”和 -mtime / -mmin。或者触摸标志文件。如果目标文件比标志文件新,请发送电子邮件,然后刷新标志文件上的时间戳。
如果您想要(接近)立即通知,请查看因克朗
并且它不会触发任何电子邮件
……这是不可能的。检查你的日志。为什么电子邮件没有送达这里经常被问到。