linux - Inotifywait 在 while 循环中无法按预期工作
问题描述
我想在监视目录中运行修改选项的数量以及何时发生 3 个修改事件。我想运行一个命令。
我已经尝试了如下所示的代码,但是即使发生修改事件,计数变量也不会增加。
#!/bin/bash
count=0
while :
do
{ inotifywait -m -q -e modify /home/testDir& let count="$count + 1"; } || exit 1
if [ "$count" -eq "3" ]; then
#Do something
count=-250
fi
done
解决方案
您的脚本和inotify
使用存在几个问题:
inotifywait -m -q -e modify
:
-m
: monitor 不退出,所以它永远不会退出,也永远不会打印出任何东西
-q
: 不会打印出任何东西
-e
: 该modify
事件不适用于目录,但适用于其中的文件
{ inotifywait -m -q -e modify /home/testDir& let count="$count + 1"; } || exit 1
将inotifywait
在后台启动,立即加1计数并继续
let count="$count + 1
: 太陈旧了。改为使用count=$((count + 1))
。
固定版本:
#!/usr/bin/env sh
count=0
while :; do
{
inotifywait -qe 'modify' /home/lea/t/testDir || exit 1
} >/dev/null 2>&1
count=$((count + 1))
if [ "$count" -eq "3" ]; then
echo 'Do something'
count=-250
fi
done
推荐阅读
- sql - 如何在 sql 中分组并显示最小和最大时间而不在分组字段上显示不同的结果
- python - 我在 python opp 中的多重继承中遇到类型错误
- azure - 为 ARM 中的生产 Azure 函数槽保留当前 AppSettings
- django - 如何优化我的代码和数据库访问?
- algorithm - 汽车加油问题(贪心算法),O(n) 复杂度的嵌套 while 循环
- kubernetes - 如何限制普罗米修斯中的目标数量
- javascript - 在 Sequelize 中将 then promise 用于链式 promise 时未定义对象
- coq - 这个 Coq 证明正确吗?
- python - 没有OpenCV库函数如何在浏览器中显示和修改本地存储的视频?
- html - 如何不获取由换行符引起的空白