[英]To Delete single cron job using PHP
I am using a php command to set up a cron job 我正在使用php命令设置cron作业
<?php
echo exec('echo -e "`crontab -l`\n* * * * * /usr/local/bin/curl path" | crontab -');
?>
above command will add cronjob but i want to remove particular cronjob of given path so i have tried 上面的命令将添加cronjob,但是我想删除给定路径的特定cronjob,所以我尝试了
<?php
echo exec('echo -e "`crontab -r`\n1 * * * * /usr/local/bin/curl path" | crontab -');
?>
but it's delete all cronjobs with email id.Is there any way to delete particular cron job? 但是它会删除所有具有电子邮件ID的cronjob。是否有办法删除特定的cron作业?
As you found out, crontab -r
removes all cron jobs, to remove one cron tab something like this would probably work: 如您crontab -r
, 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 -');
$match = 'yourpath';
exec('crontab -l 2>&1 | grep -v '.$match.' | sort - | crontab -');
This lists the crontab, matches everything except the line you want deleted, and then pipes this match back in to create a new crontab. 这将列出crontab,匹配除您要删除的行以外的所有内容,然后将该匹配项通过管道传输回以创建新的crontab。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.