【发布时间】:2014-04-29 20:14:31
【问题描述】:
我正在制作一个 shell 脚本,它可以“在任何新文件进入特定目录时向我发送电子邮件,其中包含新文件的名称大小和时间戳”。
以下代码很好地完成了这项工作:
#!/bin/bash
monitor_dir=/path/to/dir
email=me@me.com
files=$(find "$monitor_dir" -maxdepth 1 | sort)
IFS=$'\n'
while true
do
sleep 5s
newfiles=$(find "$monitor_dir" -maxdepth 1 | sort)
added=$(comm -13 <(echo "$files") <(echo "$newfiles"))
[ "$added" != "" ] &&
find $added -maxdepth 1 -printf '%Tc\t%s\t%p\n' |
mail -s "incoming" "$email"
files="$newfiles"
done
现在我想要与 cron 作业相同的功能。这样我就可以以 15 分钟的间隔和每 15 分钟的脚本运行检查电子邮件新文件退出来安排它。
请建议...
【问题讨论】:
-
为什么不把睡眠间隔改为 15 分钟呢?
sleep 900 -
更改睡眠时间不会退出正在运行的进程。我希望每 15 分钟运行一次-检查-电子邮件新文件-退出程序。这样做的原因是减少资源消耗
-
鉴于你在linux上,你可以从
inotify-tools查看inotifywait,正是为了这个目的。不需要定期检查 - 当新文件进入时它会通知,否则就在那里等待。 -
我无法使用 inotify。只有 cron 和 script 是选项
-
@Readerlook,这是作业吗?为什么会有工具限制?