我正在尝试想出一种简单易用的方法来检测我想查看的文件夹中何时没有任何写入活动。
基本上,我想要的是这样的:
#!/bin/sh
# colored red text (error)
function errorMsg () {
echo '\033[0;31m'"$1"'\033[0m'
}
# check for folder to monitor argument
if [ "$#" -ne 1 ]
then
errorMsg "add experiment (folder) to monitor for activity!"
exit
fi
# time out time, 3 minutes
TIMEOUT_TIME=180
LAST_CHECKED=0
function refreshTimer () {
# when called, check seconds since epoch
CURRENT_TIME=date +%s
if [ CURRENT_TIME - LAST_CHECKED > TIMEOUT_TIME ]
then
echo "file write activity halted!" | mail -s "trouble!" "user@provider.ext"
fi
LAST_CHECKED=date +%s
}
# set last checked to now.
LAST_CHECKED=date +%s
# start monitoring for file changes, and update timer when new files are being written.
fswatch -r ${1} | refreshTimer
但我认为需要各种 bash 魔法,因为 fswatch 是一项后台任务,并且通过管道传输其输出会创建一个子shell。我还需要一些计时器逻辑......我在想类似 setTimeout 的东西,当有活动时,它的时间参数会不断添加到其中,但我不知道如何在一个脚本中全部编写。
Bash、Python、Ruby,任何可以在 OSX 上使用 homebrew 安装的东西都很好,但越简单越好(所以我明白发生了什么)。