0
我想寫一個幫助刪除cron作業的函數,我已經嘗試了一些從網上的類,但它沒有工作,所以我自己寫它,它不能正確刪除命令的問題,它要麼刪除它,要麼刪除文件中存在的每個cron作業的一半!我的刪除cronjob php函數有什麼問題?
這裏是我的功能:
function delete_cronjob($command)
{
$outputs = array();
exec('crontab -l',$outputs);
for($i=0;$i<count($outputs);$i++)
{
if ($outputs[$i]==$command)
$outputs[$i]=NULL;
}
shell_exec('crontab -r');
for($i=0;$i<count($outputs);$i++)
{
if ($outputs[$i]!=NULL)
shell_exec('(crontab -l ; echo "'.$outputs[$i].'") |uniq - | crontab -');
}
}
這是那種cron作業的我用:
$command='0 0 * * * ssh -p 22 [email protected] "cd /home/sally/;./bckp_rstr.bash _ _ 0 1 test [email protected]:/home/sally/sal_bckp/ 192.168.0.121 22 1 "';
delete_cronjob($command);
有什麼不對?
這只是一個猜測,但也許嘗試在使用'escapeshellarg()'''''之前將'$ outputs [$ i]''傳遞給'shell_exec()'來轉義? –
它沒有幫助。這是什麼 ?? – Sally
'$ command'包含雙引號,並且在shell_exec()調用中用雙引號包裝。我的猜測是,這可能會導致一些問題,因爲報價沒有逃脫。 –