我以为这会很容易,但事实证明并非如此。
我有一个挂载的网络服务器,上面运行着inotifywatch
监视文件夹。我想进行此设置,以便网络上有权访问此服务器的任何人都可以将文件放入监视文件夹并让它执行脚本。不幸的是,除非文件在服务器本身上移动,否则它似乎不会触发。
有没有办法让inotify
监视文件夹,如果任何文件从任何地方触发 inotify 事件?还是我应该研究其他事情?
作为参考,这是我在 shell 脚本中使用的内容:
inotifywait -m --format '%f' -e moved_to "/mnt/server/folder/" |
while read NAME
do
echo $NAME
done
我最终在 cron 作业中设置 rsynch,每隔几分钟从网络复制一次文件夹,然后使用 inotifywatch 从那里获取新文件。
inotifywait 已挂载驱动器的解决方法 :/
saveloop2 ./03_packages.js "clear" "node ./03_packages.js"
#!/usr/bin/env bash
if [[ "$#" -lt 2 ]]; then
echo -e "e[91;48;5;52musage: saveloop <watchfile> <execution script> [another] [another] ✗✗✗e[0mn"
echo -e "example: saveloop .gitalias "foo param1 param2" ["command2"] ["command2"]"
echo -e "Note: each command with its params to be in quotes."
exit
fi
while :
do
oldTimestamp=$timestamp
timestamp=$(stat -c %Y $1)
if [[ $oldTimestamp != $timestamp ]]; then
$2
$3
$4
fi
sleep 1
done