我有这样的代码来触发/etc/inittab中的脚本:
until test -p /tmp/updates.pipe
do
sleep 0.25
done
使用sleep
进行调试时,自set -x
泛洪调试日志以来我想重构哪些内容。
IIUC inotifywait
只在目录上观看。
inotifywait -e create /tmp
那么如何才能在看到 /tmp/updates.pipe 文件的CREATE事件后继续进行,而不是/tmp
中的任何其他文件?
答案 0 :(得分:1)
grep的安静标志会导致它在看到匹配后立即爆发。以下内容应在bash下运行。
grep -q updates.pipe<(inotifywait -e create -m / tmp)
答案 1 :(得分:0)
这样的事情怎么样:
while read OUTPUT
do
if echo $OUTPUT | grep -q "CREATE updates.pipe"; then break; fi
done < <(inotifywait -qm -e create /tmp)
但这并不适用于所有shell。
这是另一个应该适用于所有shell的解决方案:
inotifywait -qm -e create /tmp | while read OUTPUT
do
if echo $OUTPUT | grep -q "CREATE updates.pipe"; then break; fi
done
但出于一些神秘的原因,它只会在CREATE updates.pipe
后的下一个输出之后中断,有人知道为什么吗?