Linux計画タスク-crontab

5071 ワード

cronの概要

cronUNIX、SOLARIS、LINUXの下にある非常に有用なツールです.cronスクリプトにより、計画タスクを定期的にシステムバックグラウンドで自動的に実行できます.

cronコマンド

  • crontab -e–当該ユーザのcrontabを編集し、crontabが存在しないことを指定した場合に新規作成する.
  • crontab -l–当該ユーザのcrontabをリストする.
  • crontab -r–当該ユーザのcrontabを削除する.
  • crontab -u< >–crontabを設定するユーザー名を指定します.

  • Linux Crontab形式


    表:Crontabフィールドと許容値(Linux Crontab)
    フィールド
    説明
    許容値

    1時間の何分か
    0-59
    時間
    1日の何時間目
    0-23
    日付
    一ヶ月の何日目
    1-31

    1年の数ヶ月目
    1-12
    曜日
    週の何日目
    0-6
    コマンド#コマンド#
    コマンド#コマンド#
    実行可能な任意のコマンド

    cronインスタンス


    1.特定時間実行


    cronの基本的な使い方は、6月10日午前8時30分にFull backup shell scriptを実行するタスクを特定の時間に実行することです.時間フィールドは24時間制で、午後8時の場合は20時に書き換えられます
    30 08 10 06 * /home/ramesh/full-backup
    
  • 30–30分目
  • 08–朝8時
  • 10–10号
  • 06–6ヶ月目(6月)
  • *–1週間のいずれかの日
  • 2.複数のインスタンスのスケジュール(1日に2回)


    次のインクリメンタル・バックアップ・スクリプトは、1日に2回実行されます.
    毎日11:00、16:00に実行され、カンマの両側の時間に実行されます.
    00 11,16 * * * /home/ramesh/bin/incremental-backup
    
  • 00–0分目(時間毎)
  • 11,16–朝11時と午後4時
  • *–毎日
  • *–毎月
  • *–1週間のいずれかの日
  • 3.タスクを特定の時間にのみ実行させる(たとえば平日のみ実行させる)


    次の例は、データベースのステータス(土曜日を含む)を毎日9:00-16:00にチェックします.
    00 09-18 * * * /home/ramesh/bin/check-db-status
    
  • 00–0分目(時間毎)
  • 09-18–9時、10時、11時、12時、午後1時、午後2時、午後3時、午後4時、午後5時、午後6時
  • *–毎日
  • *–毎月
  • *–1週間のいずれかの日
  • 平日のみの操作
    00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
    
  • 00–0分目(時間毎)
  • 09-18–9時、10時、11時、12時、午後1時、午後2時、午後3時、午後4時、午後5時、午後6時
  • *–毎日
  • *–毎月
  • 1-5–月曜、火曜、水曜、木曜、金曜(平日)
  • 4.cronタイミングタスクの表示方法


    現在のユーザータイミングタスクの表示
    ramesh@dev-db$ crontab -l
    

    ROOTユーザータイミングタスクを確認し、rootでsu-rootに登録し、再実行crontab -l
    root@dev-db# crontab -l
    no crontab for root
    

    他のユーザータイミングタスクの表示
    root@dev-db# crontab -u sathiya -l
    @monthly /home/sathiya/monthly-backup
    00 09-18 * * * /home/sathiya/check-db-status
    

    5.cronタイミングタスクの編集方法

    ramesh@dev-db$ crontab -e
    

    6.毎分スケジュールされたタスクを実行


    理論的には、毎分実行するshellはありませんが、次の例ではcrontabをよりよく理解してみましょう.
    * * * * *  
    
    *取れる可能性のあるすべての値を表し、そのまま*のほか、以下の例もよく用いられる
  • 指定*/5分フィールドで5分ごとを表す.
  • 指定された場合0-10/2分フィールドでは、最初の10分を2分ごとに表す
  • 上記の例は、他の4つのフィールドについても同様に試用されます.

    7.バックグラウンドで10分ごとにタイミングタスクを実行する

    */10 * * * * /home/ramesh/check-disk-space
    

    いくつかの特殊な例があり、上記の5つのフィールドをキーワードで置き換えることができます–rebootmidnightyearlyhourlyTable: Cron special keywords and its meaning
    Keyword
    Equivalent
    @yearly
    0 0 1 1 *
    @daily
    0 0 * * *
    @hourly
    0 * * * *
    @reboot
    再起動時に実行

    8.毎年の最初の分にタイミングタスクを実行(@yearly)


    次の例は、毎年1月1日0:00に実行されます.
    @yearly /home/ramesh/red-hat/bin/annual-maintenance
    

    9.毎月タイミングタスクを実行(@mothly)


    次の例は、毎月1日0:00に実行されます.
    @monthly /home/ramesh/suse/bin/tape-backup
    

    10.定時タスクを毎日実行(@daily)


    次の例は毎日0:00に実行されます.
    @daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"
    

    11.再起動のたびにタイミングタスクを実行(@reboot)

    @reboot CMD
    

    12.mailキーワードでcronのメールを禁止/リダイレクトする方法


    デフォルトでは、crontabはタイミングタスクをスケジュールした管理者にメールを送信し、このユーザーにリダイレクトしたい場合はMAILを追加して更新します.
    ramesh@dev-db$ crontab -l
    MAIL="ramesh"
    
    @yearly /home/ramesh/annual-maintenance
    */10 * * * * /home/ramesh/check-disk-space
    

    誰にも受け取りたくない場合は、MAILをそのまま空にします

    13.秒ごとに1つのタイミングタスクを実行する方法


    最小処理ユニットが分であるため、毎秒実行を手配できません.一方、毎秒1つのタスクを実行する理由はありません.

    14.cronのPATH変数


    上の例はすべて絶対的な経路で
    相対的なパスを使用する場合は、環境変数をcrontabで追加できます.
    ramesh@dev-db$ crontab -l
    
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh
    
    @yearly annual-maintenance
    */10 * * * * check-disk-space
    

    15.cronファイルからcronタスクを定義する


    直接編集するほか、1つのファイルでタスクを編集してからインポートすることもできます.
    ramesh@dev-db$ crontab -l
    no crontab for ramesh
    
    $ cat cron-file.txt
    @yearly /home/ramesh/annual-maintenance
    */10 * * * * /home/ramesh/check-disk-space
    
    ramesh@dev-db$ crontab cron-file.txt
    
    ramesh@dev-db$ crontab -l
    @yearly /home/ramesh/annual-maintenance
    
    */10 * * * * /home/ramesh/check-disk-space
    
     

    この操作は、既存のcronタスクを削除することに注意してください.
    http://justjavac.com/other/2013/09/22/linux-scheduled-task-crontab.html