我有一个脚本启动一个永久的 inotifywait 会话(使用 -m 开关),该会话监视等待备份文件放入的目录,然后将它们移动到可以管理它们的另一个目录。该脚本如下所示:
dir=/home/userid/drop/
target=/home/userid/current/
inotifywait -m "$dir" --format '%w%f' -e create |
while read file; do
mv "$file" "$target"
find /home/userid/current -maxdepth 1 -type f -name "*.sql.gz" -print0 | xargs -r0 ls -t | tail -n +5 | tr '\n' '\0' | xargs -r0 rm
done
上面的脚本在文件删除后立即移动它们,然后将目标目录清除到最后 4 个文件。这工作得很好,并且可以将其设置为从 crontab 条目(可能是凌晨 1:30 左右)开始。
然而,23 小时 45 分钟后,我需要能够关闭永久 inotifywait 进程并执行一些其他维护,然后才允许其再次重新启动。因此,我希望能够有另一个 crontab 条目来调用另一个脚本来关闭正在运行的 inotifywait 进程,执行其他维护,然后退出。这将允许第一个 crontab 条目重新启动目录监控。
我需要这一切都在无人值守的情况下运行,而无需登录到终端会话。这可能吗?如果是这样,我将在维护脚本中使用什么命令来停止由其他脚本启动的 inotifywait 会话?
任何指导将不胜感激。