Я нашел на этом форуме, что можно редактировать crontab следующим образом:
а. crontab -l> $ tmpfile
б. edit $ tmpfile
с. crontab $ tmpfile
д. rm $ tmpfile
Итак, я пытаюсь реализовать это решение на php:
include('Net/SSH2.php');
$ssh = new Net_SSH2('myhost');
if (!$ssh->login('user', 'password'))
{
echo'Login Failed';
}
$ssh->exec('crontab -l > /var/www/tmp.txt');
$content=file_get_contents("/var/www/tmp.txt");
$content.='0 0 1 * * /usr/bin/php /var/www/clearPreviousMonth1.php';
$file=fopen("/var/www/tmp.txt", "w");
fputs($file,$content);
fclose($file);
$ssh->exec('crontab /var/www/tmp.txt');
echo $content;
Я вижу отредактированный контент crontab в моем браузере и файле tmp, но когда я использую crontab -e, он не изменился. Какая моя ошибка?
Я должен был добавить новую строку до конца файла. В другом случае он не добавляется к crontab. изменил $content.='0 0 1 * */usr/bin/php/var/www/clearPreviousMonth1.php';
до $content.="0 0 1 * */usr/bin/php/var/www/clearPreviousMonth1.php\n";
обратите внимание, что необходимо использовать "
вместо '
, потому что он просто добавит символы \n
в последнюю строку