【问题标题】:Check a files Modified date and email if it has changed [closed]检查文件修改日期和电子邮件是否已更改[关闭]
【发布时间】:2013-01-04 20:23:27
【问题描述】:

我正在寻找一个 bash 脚本,该脚本将检查文件是否在过去一小时内被修改,如果文件被修改,则通过电子邮件发送警报。该脚本将用于 Solaris 和 Ubuntu。我相信这并不难,但我不是 Linux 管理员。有人可以帮忙吗?

【问题讨论】:

  • 详细了解find(1) 命令。或者也许支付专业的系统管理员或开发人员......
  • 单线 cron 作业 FTW! * * * * * find /path/to/file -mmin -1 -exec mail -s 'Subject here' email@example.com <<< 'Message here' \;

标签: linux solaris


【解决方案1】:

这个怎么样?

#!/bin/bash

[[ -z `find /home/spatel/ -mmin -60` ]]

if [ $? -eq 0 ]
then
    echo -e "nothing has changed"
else
    mail -s "file has been changed" spatel@example.com
fi

将此脚本放入每小时 cron 作业中

01 * * * * /path/to/myscript 

【讨论】:

  • 看起来不错!我会试一试,让你知道!非常感谢!!
  • 别忘了给答案打分,这对我们有帮助:)
【解决方案2】:

linux 支持inotify 命令。您可以使用它来监控文件活动——文件更改、文件创建,无论何时何地。

上面给出的 find 命令不适用于开箱即用的 solaris。对linux来说很好。在 Solaris 上有两种选择:

  1. 去www.sunfreeware.com下载gnu coreutils,会在/usr/local/bin安装gnu find(find的上述版本)

  2. 编写一个使用touch命令的脚本,等待60多分钟然后测试文件,唯一的问题是这个脚本永远在后台运行,如果你知道一些perl来生成一个适合@的时间字符串,你可以避免这种情况987654323@ 创建时间过去一小时的文件 这是永远运行的版本:

    如果是真的

    do
       touch dummy
    
       sleep 3615 # 1 hour 15 seconds
    

    [ file_i_want_to_test -nt dummy ] && echo 'file blah changed' | mailx -s '文件已更改' me@myco.com

    done
    

【讨论】:

  • 非常感谢!这是非常有用的信息。
猜你喜欢
  • 2013-05-29
  • 2014-11-27
  • 1970-01-01
  • 2018-09-13
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多