我有一个 bash 脚本,它使用 inotify-tools 处理一些数据,以了解文件系统上何时发生某些事件。如果在 bash 控制台中运行它可以正常工作,但是当我尝试将它作为守护程序运行时它会失败。我认为原因是inotifywait
命令调用的所有输出都进入了一个文件,因此之后的部分| while
不再被调用。我该如何解决?这是我的脚本。
#!/bin/bash
inotifywait -d -r \
-o /dev/null \
-e close_write \
--exclude "^[\.+]|cgi-bin|recycle_bin" \
--format "%w:%&e:%f" \
$1|
while IFS=':' read directory event file
do
#doing my thing
done
所以,-d
告诉inotifywait
作为守护进程运行,-r
递归地执行它并且-o
是保存输出的文件。在我的情况下,该文件是/dev/null
因为我真的不需要输出,除了处理命令之后的部分(| while...
)