0

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);

どうしたの ?

4

1 に答える 1

0

私のシステム(Fedora)と同じようにシステムで動作する場合は、file_put_contentsを使用することをお勧めしますが、間違いはほとんどありません。

また、cronジョブをデータベースに保存しているので、アクティブ/非アクティブとしてフラグを立て、アクティブなジョブをダンプすることができます-コメント/機能の説明のフィールドと一緒に

手動で編集したcronを上書きするという欠点がありますが、私はそうする傾向がありません。すべてのサーバーからアクセスできるcronのストアがあることの利点(cronがどのサーバー用であるかを示すフィールドがあります)は、それを上回ります。また、cronのリストが残りのデータと一緒にバックアップされ、必要に応じて他のマシンに簡単にプッシュできることも意味します:)検討する価値があります。

于 2013-02-04T09:06:39.747 に答える