【发布时间】:2019-04-23 14:03:17
【问题描述】:
我想在我的 Docker 容器中的目录上放置一个文件观察器。我正在使用entrypoint.sh 脚本来设置放置文件观察器的脚本。设置是这样的:
#!/bin/sh
# Trigger the script with the file watcher in the background
./bin/watcher.sh &
而watcher.sh 脚本包含inotifywait 命令:
#!/bin/sh
inotifywait \
--event create --event delete \
--event modify --event move \
--format "%e %w%f" \
--monitor --outfile '/var/log/inotifywait.log' \
--syslog --quiet --recursive \
/etc/haproxy |
while read CHANGED;
do
echo "$CHANGED"
haproxy -W -db -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid) &
done
但是,虽然当我检查top 时会列出观察程序,并且它会报告定义的日志文件中的更改,但循环永远不会触发。我试过用简单的方法调试循环:
touch /var/log/special.log
echo "${CHANGED}" >> /var/log/special.log
但是文件永远不会被创建,并且没有任何内容被回显。在 bash 脚本中使用 inotifywait 与循环的正确方法是什么?
【问题讨论】:
标签: linux bash sh alpine inotify