猿问

使用PHP创建、编辑和删除crontab作业?

使用PHP创建、编辑和删除crontab作业?

是否可以使用PHP创建、编辑和删除crontab作业?

我知道如何列出Apache用户当前的crontab作业:

$output = shell_exec('crontab -l');echo $output;

但是如何使用PHP添加cron作业呢?‘crontab-e’只是打开一个文本编辑器,在保存文件之前,您必须手动编辑条目。

以及如何用PHP删除cron作业?同样,您必须通过“crontab-e”手动完成此操作。

使用这样的作业字符串:

$job = '0 */2 * * * /usr/bin/php5 /home/user1/work.php';

如何使用PHP将其添加到crontab作业列表中?


墨色风雨
浏览 1134回答 3
3回答

慕运维8079593

crontab命令使用usage:  crontab [-u user] file         crontab [-u user] [ -e | -l | -r ]                 (default operation is replace, per 1003.2)         -e      (edit user's crontab)         -l      (list user's crontab)         -r      (delete user's crontab)         -i      (prompt before deleting user's crontab)所以,$output = shell_exec('crontab -l');file_put_contents('/tmp/crontab.txt', $output.'* * * * * NEW_CRON'.PHP_EOL);echo exec('crontab /tmp/crontab.txt');以上两种方法都可以使用。创建和编辑/追加只要用户具有足够的文件写入权限。删除职务:echo exec('crontab -r');另外,请注意Apache是作为特定的用户运行的,这通常不是根用户,这意味着cron作业只能为Apache用户更改,除非给定crontab -uApache用户的权限。

江户川乱折腾

检查一份工作function cronjob_exists($command){     $cronjob_exists=false;     exec('crontab -l', $crontab);     if(isset($crontab)&&is_array($crontab)){         $crontab = array_flip($crontab);         if(isset($crontab[$command])){             $cronjob_exists=true;         }     }     return $cronjob_exists;}追加职位function append_cronjob($command){     if(is_string($command)&&!empty($command)&&cronjob_exists($command)===FALSE){         //add job to crontab         exec('echo -e "`crontab -l`\n'.$command.'" | crontab -', $output);     }     return $output;}删除crontabexec('crontab -r', $crontab);例exec('crontab -r', $crontab);append_cronjob('* * * * * curl -s http://localhost/cron/test1.php');append_cronjob('* * * * * curl -s http://localhost/cron/test2.php');append_cronjob('* * * * * curl -s http://localhost/cron/test3.php');
随时随地看视频慕课网APP
我要回答