【问题标题】:Determine if a file has changed确定文件是否已更改
【发布时间】:2016-12-19 14:28:59
【问题描述】:

我创建了一个 bash 脚本,该脚本每天早上 06:00 运行,以检查文件是否在早上 5:00 至早上 06:00 之间更改。

我们的服务器每天早上 5:00 自动上传这个文件 upload.xml 并替换旧的,因此我创建了一个 bash 脚本来检查这个文件是否已上传。

我的 bash 脚本无法正常工作。每天从 bash 脚本发送电子邮件,告诉我此文件尚未上传或更改,并检查该文件是否已使用新更改的时间上传。

那么我的代码有什么问题。

这是我的 bash 脚本代码。

[[ -z `find /home/USER/public_html/upload.xml -mmin -60` ]]

if [ $? -eq 0 ]
then
    mail -s "File has not been changed" admin@mydomain.com
else
    echo -e "file has been changed"
fi

【问题讨论】:

    标签: bash cron server find crontab


    【解决方案1】:

    使用$() 代替旧版backticks

    var="$(find /home/USER/public_html/ -type f -mmin -60 -name "upload.xml")"
    if [ -z "$var" ] #checking if a SET variable is empty
    then
        mail -s "File has not been changed" admin@mydomain.com
    else
        echo -e "file has been changed"
    fi
    

    备注

    • 在 find 中,您首先指定路径,然后使用 -name 过滤文件
    • 在这里对变量进行双引号没有害处。

    【讨论】:

    • 感谢您的漂亮回答。呐,我已经用你的代码代替了。所以这个脚本会检查文件是否在 60 分钟前被更改过?
    • @Alex Imho -60 应在过去 60 分钟内解释,+60 应解释为不在过去 60 分钟内
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2018-09-13
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多