我想使用linux bash脚本每天监视一个目录以查找新文件。
每隔4个小时左右就会将新文件添加到目录中。所以我想在一天结束时处理所有文件。 通过进程,我的意思是将它们转换为替代文件类型,然后在转换后将它们传输到另一个文件夹。
我看过inotify
来监控目录,但无法判断你是否可以将其作为日常用品。
使用inotify
我在示例脚本中使用了此代码:
#!/bin/bash
while read line
do
echo "close_write: $line"
done < <(inotifywait -mr -e close_write "/home/tmp/")
这会在添加新文件时立即通知。
我正在考虑使用它并跟踪新文件,然后在一天结束时立即处理它们。
我之前没有这样做,所以我希望得到一些帮助。
除inotify
以外的其他内容可能会更好。
谢谢!
答案 0 :(得分:1)
您可以使用每日cron作业:http://linux.die.net/man/1/crontab
答案 1 :(得分:1)
绝对应该考虑使用cronjob。编辑您的cronfile并将其放入:
0 0 * * * /path/to/script.sh
这意味着每天午夜运行你的脚本。然后在你的script.sh
中,你要做的只是所有文件,“将它们转换为替代文件类型,然后在转换后将它们传输到另一个文件夹”。
答案 2 :(得分:1)
要在一天结束时收集文件,只需使用find:
find $DIR -daystart -mtime -1 -type f
然后正如其他人指出的那样,设置一个cron作业来运行你的脚本。
答案 3 :(得分:1)
您的cron作业(请参阅本页的其他答案)应保留已处理文件的列表,然后使用64-bit JVM
获取新文件。
man comm
它是更好的替代品
UseCompressedOops
并且可能比使用comm -3 processed-list all-list
更强大,因为您记录了实际处理的那些。