for($i=1; $i<=5; $i++) {
addJob('0 * * * * command_name'.$i.' #mycommand');
}
echo getAllJobs();
deleteJob('0 * * * * command_name3 #mycommand');
echo getAllJobs();
function getAllJobs() {
return shell_exec('crontab -l');
}
function addJob($job) {
shell_exec('(crontab -l ; echo "'.$job.'") | sort - | uniq - | crontab -');
}
function deleteJob($job) {
$all_jobs = getAllJobs();
$all_jobs = preg_replace('/^'.preg_quote($job).'\n/Uim', '', $all_jobs);
shell_exec('echo "'.$all_jobs.'" | crontab -');
}
Результат работы:
{17:31}[2.1.1]~/tmp/cron ➭ php cron.php
0 * * * * command_name1 #mycommand
0 * * * * command_name2 #mycommand
0 * * * * command_name3 #mycommand
0 * * * * command_name4 #mycommand
0 * * * * command_name5 #mycommand
0 * * * * command_name1 #mycommand
0 * * * * command_name2 #mycommand
0 * * * * command_name4 #mycommand
0 * * * * command_name5 #mycommand
Disclaimer.Это лишь демонстрация принципа работы. В реальных условиях нужно как-то "фильтровать" команды для обеспечения безопасности. Если в результате использования этого кода у вас отформатируется hdd -- вся ответственность лежит на вас.
А также наверное потребуется экранировать команды чем-то вроде escapeshellarg().
_____________
Чатик в телеге