我的删除cronjob php函数有什么问题?

时间:2013-02-02 12:48:49

标签: php shell command crontab

我正在尝试编写一个有助于删除cron作业的函数,我已经从网上尝试了一些类但是它没有用,所以我自己编写它,它没有正确删除命令的问题,它要么删除它,要么删除文件中存在的每个cron作业的一半!

这是我的功能:

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 root@192.168.0.121 "cd /home/sally/;./bckp_rstr.bash _ _ 0 1 test root@192.168.0.196:/home/sally/sal_bckp/ 192.168.0.121 22 1 "';
delete_cronjob($command);

出了什么问题?

1 个答案:

答案 0 :(得分:0)

如果它对你的系统起作用就像在我的系统上一样(Fedora)我会建议使用file_put_contents,更不用说出错了

此外,我将cron作业存储在一个数据库中,因此我可以将它们标记为活动/非活动状态,只是转储出活动的作业 - 以及一个用于评论的字段/描述它的作用

它有覆​​盖任何手动编辑的crons的缺点,但我不倾向于这样做。拥有一个可以通过我们的服务器访问的crons存储的优势 - 有一个字段可以说明crons用于哪些服务器 - 超过了这一点。它还意味着crons列表与其他数据一起备份,如果需要,可以很容易地推送到其他机器:)值得考虑。