是否可以编写仅在文件夹大小发生更改时运行的cron/SHELL脚本?

是否可以编写仅在文件夹大小发生更改时运行的cron/SHELL脚本?,shell,cron,crontab,Shell,Cron,Crontab,是否可以编写仅在文件夹大小发生更改时运行的cron/脚本。。i、 e.文件夹中的文件被更改或新文件被创建,因此文件夹大小将更改,cron或脚本将运行。标准中不支持此类监视事件:cron严格基于时间 假设使用了cron,则需要在“唤醒”作业中处理此任务,然后该作业可以选择立即休眠/结束,或者根据将文件夹与以前的已知状态进行比较来执行其他操作 现在,如果将cron从作为启动/监视平台的角色中移除,那么就有“非轮询”的方法来监视文件系统,例如 如果只是寻找一个系统守护进程来补充此任务的标准cron,请

是否可以编写仅在文件夹大小发生更改时运行的cron/脚本。。i、 e.文件夹中的文件被更改或新文件被创建,因此文件夹大小将更改,cron或脚本将运行。

标准中不支持此类监视事件:cron严格基于时间

假设使用了cron,则需要在“唤醒”作业中处理此任务,然后该作业可以选择立即休眠/结束,或者根据将文件夹与以前的已知状态进行比较来执行其他操作

现在,如果将cron从作为启动/监视平台的角色中移除,那么就有“非轮询”的方法来监视文件系统,例如

如果只是寻找一个系统守护进程来补充此任务的标准cron,请参阅以下备选方案

:

incron是一个“inotify cron”系统。它的工作原理与常规cron类似,但由文件系统事件而不是时间段驱动。它包含两个程序,一个称为“incrond”(类似于crond)的守护进程和一个表操纵器“incrontab”(类似于“crontab”)

:

Watcher是一个守护进程,它监视指定文件/文件夹的更改,并根据这些更改发出命令。它与incron类似,但是,配置使用了一个更易于读取的ini文件,而不是纯文本文件。与incron不同,它还可以递归地监视目录。它也是用Python编写的,因此更容易破解

您的许多解决方案:

-以inotifywait为例:

inotifywait -m /path 2>&- | awk '$2 == "CREATE" { print $3; fflush() }' |
    while read file; do
        echo "$file"
        # do something with the file
    done
在Ubuntu中,inotifywait由inotify工具包提供

-使用印克龙

您可以在此处看到完整的示例:

-简单的

ls -1A isempty | wc -l 
我的习惯用语通常是:

dir=/dir/to/watch
if [ $dir -nt $dir.flag ]; then
     touch -r $dir $dir.flag
     do_work
fi
然而,这是针对修改时间而不是尺寸的测试。目录的大小并不是一个非常有用的概念,因为它只是很少改变


顺便说一下,$dir.flag不能在$dir中创建,因为这会使$dir在$dir.flag之后发生更改,所以您需要将$dir.flag存储在您有写入权限的地方。

看看这个解决方案,它很好: