我在this forum发现可以像这样编辑crontab:
一个。 crontab -l> $ TMPFILE
湾编辑$ tmpfile
C。 crontab $ tmpfile
d。 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;
我可以在浏览器和tmp文件中看到crontab的已编辑内容,但是当我使用 crontab -e 时,它没有被更改。我的错是什么?
答案 0 :(得分:0)
我必须在文件结束前添加新字符串。在其他情况下,它没有添加到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
个符号附加到最后一个字符串