修改文件后重新运行应用程序

时间:2018-11-12 09:30:25

标签: shell

当前我要在最近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

您能指出我这样做的正确方法吗? 谢谢!

3 个答案:

答案 0 :(得分:1)

使用此:

#!/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
done
  • date +%s返回当前时间戳
  • stat -c %X <your_file>返回时间戳中的最后修改时间

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果我的理解是正确的,并且您需要做的就是监视一些随机的find(例如{{1 }}),根据上次访问时间,您可以尝试./

file