首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修改文件时重新运行应用程序

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

Stack Overflow用户
提问于 2018-11-12 17:30:25
回答 3查看 47关注 0票数 0

当文件在过去2分钟内未被修改时,我当前希望重新启动应用程序。为此,我写了一个小脚本来做这件事(我是shell代码的初学者),但我得到了一些错误,并且没有成功获得我想要的行为:

代码语言:javascript
复制
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

你能告诉我这是不是正确的方法吗?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2018-11-12 18:37:14

使用以下命令:

代码语言:javascript
复制
#!/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 return current timestamp
  • stat -c %X <your_file>返回上次修改时间,时间戳
票数 1
EN

Stack Overflow用户

发布于 2018-11-12 18:39:24

find返回始终为零返回代码。可以使用类似于以下内容:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2018-11-12 18:39:31

我并不完全相信在./中使用find命令,如果我的理解是正确的,您所需要做的就是根据上次访问时间监视一些随机的file (比如/var/log/file.log ),您可以尝试stat

代码语言:javascript
复制
#!/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;
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53259238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档