也许我想要的甚至不可能,但让我们看看。 我需要运行Linux命令行:
(cd /packages/test/import/lisbon.stuck;ls;cd) | while read f ; do
mv /packages/test/import/lisbon.stuck/$f /packages/test/import/lisbon/
sleep 0.2
done
我需要做的是获取运行此命令的脚本,但是当/packages/test/import/lisbon/
中的文件数达到1000时暂停脚本,并在文件数减少到100时从脚本返回。
这有可能吗?
答案 0 :(得分:0)
在mv
循环中的while
命令之后,您可以检查/packages/test/import/lisbon/
中的文件数量,如果超过1000,请暂停一段时间,然后再次检查,如果那么它小于100,继续将更多文件移动到此目录中。
答案 1 :(得分:0)
更好的解决方案是让脚本从您要监视的目录中删除文件SIGSTOP
和SIGSTOP
到您的脚本以控制文件流到目录中,但以下内容功能是有效的,如果有点效率低。
block_until_emptier () {
files=( /packages/test/import/lisbon/* )
if (( ${#files[@]} > 1000 )); then
while (( ${#files[@]} >100 )); do
sleep 0.2
done
fi
}
while true ; do
block_until_emptier /packages/test/import/lisbon
for f in /packages/test/import/lisbon.stuck/*; do
mv /packages/test/import/lisbon.stuck/$f /packages/test/import/lisbon/
done
done
答案 2 :(得分:0)
我确信inotify(7)可以帮到你。您应该考虑incron,这使您可以在目录更改时运行一些脚本!