使用PHP删除单个cron作业

时间:2013-11-19 04:10:58

标签: php cron

我正在使用php命令设置一个cron作业

<?php
   echo exec('echo -e "`crontab -l`\n* * * * *  /usr/local/bin/curl path" | crontab -');
?>

上面的命令将添加cronjob但我想删除给定路径的特定cronjob所以我试过

<?php
 echo exec('echo -e "`crontab -r`\n1 * * * *  /usr/local/bin/curl path" | crontab -');
 ?>

但它删除了所有带有电子邮件ID的cronjobs。有没有办法删除特定的cron作业?

2 个答案:

答案 0 :(得分:1)

正如您所发现的,crontab -r删除了所有cron作业,删除了一个类似这样的cron标签:

<?php
// php is weird sometimes
// the output is an array split on new lines
exec('crontab -l', $data);
// this is the one you are replacing
$val = '*/30 * * * * /path/to/awstats.pl -update -config=myconfig';
// find it in the array
$key = array_search($del_val, $data);
// key is false if not found
if($key !== false){
  unset($data[$key]);
}
// put the data back into the crontab
exec ('echo "'.implode("\n", $data).'" | crontab -');

答案 1 :(得分:0)

$match = 'yourpath';
exec('crontab -l 2>&1 | grep -v '.$match.' |  sort - | crontab -');

这列出了crontab,匹配除了要删除的行之外的所有内容,然后重新管道此匹配以创建新的crontab。