強力なcrontab

2193 ワード

Unix-likeシステムには、crontabのタイミングタスクサービスがあります.最近では、起動自動起動サービスや定期的に証明書をリフレッシュするのに便利です.
プロファイル
#        
$ crontab [-u user] {-e | -l | -r}
# `-e`  ,`-l`  ,`-r`  

#         
$ vim /etc/crontab
  • crontab -eを使用してユーザーレベルのプロファイルを変更し、編集を終了すると自動的に再ロードされ、すぐに有効になり、/var/spool/cron/crontabs/$usernameに保存されます(システムによって変更される場合があります).
  • システムレベル/etc/crontabは、通常cronサービスによって毎分1回読み出されるため、システムを再起動する必要がなく、リアルタイムで有効になります.

  • フォーマットの設定
    環境変数は、プロファイルで定義できます.
    PATH=/usr/bin:/usr/local/bin
    

    コンフィギュレーション・ファイルは、行ごとに1つのタスクを定義します.各列の間に少なくとも1つの空白文字で区切られます.
    #    
            [  ...]
    
    #   `/etc/crontab`   `user`
               [  ...]
    

    時間のフォーマットは通常5列で、それぞれ
  • 分:0-59
  • 時間:0-23
  • 日付:0-31
  • 月:0-12または名前
  • 週間:0-7または名前
  • 各フィールドには、次のような表示方法があります.
  • 時間範囲は、-、例えば1-3で接続される.
  • の複数の時点または範囲は、,のように1,3-5で区切られている.
  • *は、first-lastを表し、すなわち、最小単位ごとにタスクが実行される.
  • 時間間隔は時間範囲の後ろに書いてあり、/で隔てられています.例えば、*/21-3/2です.

  • また、@で始まる特殊な運転タイミング表示方法もあります.
  • @rebootは、システムが起動するたびに実行されます.rc.localと比較して、この方法で起動スクリプトを起動すると、プラットフォーム間、システム間、および非同期ロードがよりよく、システムの起動をブロックすることはありません.

  • 例は次のとおりです.
    #  5    
    */5 * * * * /home/gerald/run_every_5_min
    #    1 2   
    0 2 1 * * /home/gerald/run_per_month
    #    1  15  2   
    0 2 1,15 * * /home/gerald/run_twice_per_month
    #       
    @reboot /home/gerald/run_on_reboot
    

    遭遇する可能性のある穴
  • crontabは正しく構成されていますが、実行されません.注意システムのcronサービスが起動しているかどうか:
    #     
    $ sudo systemctl status cron
    #     
    $ sudo systemctl enable cron
    
  • システムグローバル構成/etc/crontabは実行されません.userが書かれているかどうかを確認します.そうしないと、プロファイルの解析に失敗したため、ファイル全体が無視されます.したがって、個人的にはcrontab -eを使用して構成するのがよりよく、rootユーザで構成する必要がある場合はsudo crontab -eまたはsudo crontab -u root -eを使用すると考えられる.
  • スクリプトの実行に失敗し、コマンドが見つかりませんでした.crontabがタスクを実行する場合、デフォルトでは環境変数はありません.環境変数を構成で明示的に指定するか、絶対パスを使用してコマンドを実行できます.