是否可以编写仅在文件夹大小发生变化时运行的cron /脚本..即文件夹内的文件发生更改或创建新文件,因此文件夹大小会发生变化而cron或者脚本会运行
答案 0 :(得分:2)
标准cron中的此类监视器事件无支持:cron 严格基于时间。
假设使用了cron,则需要在“唤醒”作业中处理此任务,然后可以选择立即睡眠/结束或执行其他操作,具体取决于将文件夹与先前已知的状态进行比较。
现在,如果cron从作为启动/监视平台的角色中删除,那么有“非轮询”方式来监视文件系统,例如inotify。
如果只是为此任务寻找补充标准cron的系统守护程序,请参阅以下备选方案。
incron是一个“inotify cron”系统。它的工作方式与常规cron类似,但由文件系统事件而不是时间段驱动。它包含两个程序,一个叫做“incrond”的守护进程(类似于crond)和一个表操作符“incrontab”(如“crontab”)。
Watcher是一个守护程序,监视指定的文件/文件夹以查找更改并触发命令以响应这些更改。它类似于incron,但是,配置使用更简单的读取ini文件而不是纯文本文件。与incron不同,它也可以递归地监视目录。它也是用Python编写的,因此更容易破解。
答案 1 :(得分:0)
你的许多解决方案:
- 使用inotifywait,例如:
inotifywait -m /path 2>&- | awk '$2 == "CREATE" { print $3; fflush() }' |
while read file; do
echo "$file"
# do something with the file
done
在Ubuntu中,inotify-tool由inotify-tools包提供。
- 使用incron
您可以在此处查看完整示例:http://www.cyberciti.biz/faq/linux-inotify-examples-to-replicate-directories/
- 简单
ls -1A isempty | wc -l
答案 2 :(得分:0)
我的习语通常是:
dir=/dir/to/watch
if [ $dir -nt $dir.flag ]; then
touch -r $dir $dir.flag
do_work
fi
然而,这是针对修改时间的测试,而不是 size 。目录的大小不是一个非常有用的概念,因为它只是不经常更改。
顺便说一下,$ dir.flag无法在$ dir中创建,因为这会在$ dir.flag之后更改$ dir,所以你需要在你有写权限的地方存储$ dir.flag。