1

我需要一个可以安排为 Cron 作业的 shell 脚本。它将指向一个目录并递归地检查每个 PHP 文件以查看它在过去 24 小时内是否发生了变化,并将其写入日志文件并每晚通过电子邮件将日志文件发送给我们。

因此脚本将执行以下操作:

  1. 递归扫描目录以查找 24 小时内更改的所有 php 文件 (home/user/httpdocs)
  2. 将它们记录到文件中 (/tmp/diff-2012-05-18.log)
  3. 通过电子邮件将日志文件发送到电子邮件地址 -

在我们将其自动化之前,它应该很容易测试。

关于如何以有效方式执行此操作的任何想法,我都有一种方法可以完成其中的一些,但它对服务器征税。-

4

1 回答 1

2

对于修改后的文件部分:

find /path/to/dir -iname '*php' -mtime -1 > /tmp/diff-$(date +%Y-%m-%d).log

然后:

mail user@example.com < /tmp/diff-$(date +%Y-%m-%d).log

理想的做法是首先创建一个$OUTPUT具有正确日期的变量,以防第一个命令花费太长时间并在第二天完成。所以,把它们放在一起:

OUTPUT=/tmp/diff-$(date +%Y-%m-%d).log
find /path/to/dir -iname '*php' -mtime -1 > $OUTPUT
mail user@example.com < $OUTPUT

或者,如果您想要更复杂一点并且瞄准一个班轮,您可以使用tee将列表保存到文件并同时邮寄(有点):

find /path/to/dir -iname '*php' -mtime -1 | tee /tmp/diff-$(date +%Y-%m-%d).log | mail user@example.com
于 2012-05-18T14:05:01.527 回答