如何创建日常任务来运行将结果输出到通过电子邮件发送的文件的命令?
我想运行以下命令:
find ./ -type f -size 510c -name "*.php" -mtime -3
位于以下位置:
/var/www/vhosts/
我想添加一个cron作业,所以如果文件不为空,我只能通过电子邮件发送内容。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
可以写一个单行来执行此操作,但如果没有,则可以编写脚本。下面是一个应该完成这项工作的perl脚本:
use warnings;
use strict;
my($cmd, $r);
my($to, $from, $subject, $message);
$cmd="find /var/www/vhosts/ -type f -size 510c -name \"*.php\" -mtime -3";
$r=`$cmd`;
if(length($r)>0) {
$to = 'to@to.com';
$from = 'from@from.com';
$subject = 'This is the subject';
$message = $r;
open(MAIL, "|/usr/sbin/sendmail -t");
# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
# Email Body
print MAIL $message;
close(MAIL);
}
只需将其保存到文件(例如script.pl),然后只需在crontab中添加一行,如下所示:
x x x x x perl /path/to/script.pl