当文件在过去2分钟内未被修改时,我当前希望重新启动应用程序。为此,我写了一个小脚本来做这件事(我是shell代码的初学者),但我得到了一些错误,并且没有成功获得我想要的行为:
while :
do
find ./ -type f -mmin -2
if [ "$?" = "0" ]; then
echo OK
else
JAR_FILE=jmxtrans-270-all.jar /appl/TCE/jmxtrans/jmxtrans.sh restart
fi
sleep 5m
done你能告诉我这是不是正确的方法吗?谢谢!
发布于 2018-11-12 18:37:14
使用以下命令:
#!/bin/bash
while :
do
if [ $[ $(date +%s) - $(stat -c %X <your_file>)] -gt $[2*60] ]; then
# reset application here
else
echo "ok"
fi
sleep 1
donedate +%s return current timestampstat -c %X <your_file>返回上次修改时间,时间戳发布于 2018-11-12 18:39:24
find返回始终为零返回代码。可以使用类似于以下内容:
while :
do
count=$(find ./ -type f -mmin -2)
if [ "$count" != "0" ]; then
echo OK
else
JAR_FILE=jmxtrans-270-all.jar /appl/TCE/jmxtrans/jmxtrans.sh restart
fi
sleep 5m
done发布于 2018-11-12 18:39:31
我并不完全相信在./中使用find命令,如果我的理解是正确的,您所需要做的就是根据上次访问时间监视一些随机的file (比如/var/log/file.log ),您可以尝试stat
#!/bin/bash
file="$1"
THRESHOLD=120
while [ 1 ] ;
do
#Get the last accesstime as unixtime stamp
last_access_time=$(stat -c %X $file)
#Current time as unixTimeStamp
current_time=$(date +%s)
#difference
diff=`echo "$currnet_time - $last_access_time" | bc`
# Threshold here is 120 seconds
if [ $diff < $THRESHOLD ];
then
echo "Do something "
fi
sleep $THRESHOLD;
donehttps://stackoverflow.com/questions/53259238
复制相似问题