【Linux】Linux-crontabコマンドを一歩一歩学ぶ(132)

6915 ワード

00.目次


文書ディレクトリ

  • 00. ディレクトリ
  • 01. コマンド概要
  • 02. コマンドフォーマット
  • 03. 共通オプション
  • 04. 知識準備
  • 05. 参考例
  • 06. 付録
  • 01.コマンドの概要


    crontabは英語の「cron table」の略です.このコマンドは、windowsの下の計画タスクと同様に、ユーザーの周期的な実行を必要とするタスクをコミットおよび管理するために使用されます.オペレーティングシステムのインストールが完了すると、デフォルトでこのサービスツールがインストールされ、crondプロセスが自動的に起動します.crondプロセスは毎分、実行するタスクがあるかどうかを定期的にチェックし、実行するタスクがある場合は自動的に実行します.
    Linuxでのタスクスケジューリングは,システムタスクスケジューリングとユーザタスクスケジューリングの2つに分類される.
    ≪システム・タスクのスケジュール|System Task Schedule|emdw≫:キャッシュ・データをハード・ディスクに書き込み、ログのクリーンアップなど、システムが周期的に実行する作業./etc/crontabファイルは、システムタスクスケジューリングのプロファイルです.≪ユーザー・タスク・スケジュール|User Task Schedule|emdw≫:ユーザーが定期的に実行する作業.たとえば、ユーザーのデータ・バックアップ、タイミング・メール・アラートなどです.ユーザーはcrontabツールを使用して、自分の計画タスクをカスタマイズできます.すべてのユーザー定義crontabファイルは/var/spool/cronディレクトリに保存されます.ファイル名はユーザー名と一致します.

    02.コマンドフォーマット

      :crontab [  ]
    

    03.一般的なオプション

    -e:           ;
    -l:           ;
    -r:           ;
    -u<    >:             。
    

    04.知識備蓄


    Linuxでのタスクスケジューリングは,システムタスクスケジューリングとユーザタスクスケジューリングの2つに分類される.
    **システムタスクのスケジュール:**システムが定期的に実行する作業.例えば、キャッシュデータをハードディスクに書き込み、ログのクリーンアップなど./etcディレクトリの下にcrontabファイルがあります.これがシステムタスクスケジューリングのプロファイルです./etc/crontabファイルには、次の行が含まれています.
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # | .------------- hour (0 - 23)
    # | | .---------- day of month (1 - 31)
    # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
    # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # | | | | |
    # * * * * * user-name command to be executed
    

    最初の4行はcrondタスクの実行を構成するための環境変数です.
    最初の行のSHELL変数は、システムがどのshellを使用するかを指定します.ここではbashです.
    2行目のPATH変数はシステムが命令を実行する経路を指定し、
    3行目のMAILTO変数crondを指定したタスク実行情報はrootユーザに電子メールで送信され、MAILTO変数の値が空の場合はタスク実行情報をユーザに送信しないことを示す
    4行目の計画タスクの例
    **ユーザータスクのスケジュール:**ユーザーが定期的に実行する作業、例えばユーザーデータのバックアップ、タイミングメールの注意など.ユーザーはcrontabツールを使用して、自分の計画タスクをカスタマイズできます.すべてのユーザ定義crontabファイルは/var/spool/cronディレクトリに保存されます.ファイル名はユーザー名と一致し、ユーザー権限ファイルは次のとおりです.
    /etc/cron.deny                  crontab  
    /etc/cron.allow                crontab  
    /var/spool/cron/       crontab       ,      
    

    crontabファイルの意味:ユーザーが作成したcrontabファイルでは、各行はタスクを表し、各行の各フィールドは設定を表し、そのフォーマットは6つのフィールドに分けられ、最初の5つは時間設定セグメントで、6番目のセグメントは実行するコマンドセグメントで、フォーマットは以下の通りです.
    minute   hour   day   month   week   command

    次のようになります.
  • minute:分を表し、0から59までの任意の整数であってもよい.
  • hour:時間を表し、0から23までの任意の整数であってもよい.
  • day:日付を表し、1から31までの任意の整数であってもよい.
  • month:月を表し、1から12までの任意の整数であってもよい.
  • week:曜日を表し、0から7までの任意の整数であってもよい.ここで、0または7は日曜日を表す.
  • command:実行するコマンドは、システムコマンドであってもよいし、自分で作成したスクリプトファイルであってもよい.

  • 上記のフィールドでは、次の特殊文字も使用できます.
  • アスタリスク(*):monthフィールドがアスタリスクの場合、他のフィールドの制約条件を満たした後、毎月コマンド操作を実行するなど、可能なすべての値を表します.
  • カンマ(,):カンマで区切られた値でリスト範囲を指定できます.たとえば、「1,2,5,7,8,9」
  • などです.
  • 中棒(-):整数間の中棒で整数範囲を表すことができ、例えば「2-6」で「2,3,4,5,6」
  • を表す.
  • 正斜線(/):正斜線で時間の間隔周波数を指定できます.たとえば、「0-23/2」は2時間ごとに実行されることを示します.また、正斜線はアスタリスクとともに使用できます.たとえば*/10はminuteフィールドで使用すると、10分ごとに実行されることを示します.

  • crontabサービスステータスの表示
    [deng@itcast ~]$ systemctl status crond.service
    

    crontabサービスを手動で開始
    [deng@itcast ~]$ systemctl start crond.service 
    

    crontabサービスが起動に設定されているかどうかを確認し、コマンドを実行します.
    [root@itcast ~]# ntsysv 
    

    電源投入自動起動
    [root@itcast ~]# systemctl enable crond.service
    

    05.参考例


    5.1 1分ごとにcalを実行
    * * * * * cal
    

    5.2時間ごとの3分目と15分目の実行
    3,15 * * * * cal
    

    5.3午前8時から11時までの3分目と15分目に実行
    3,15 8-11 * * * cal
    

    5.4 2日おきの午前8時から11時までの3分目と15分目に実行
    3,15 8-11 */2 * * cal
    

    5.5毎週月曜日の午前8時から11時までの第3分と第15分に実行する
    3,15 8-11 * * 1 cal
    

    5.6毎晩の21:30にsmbを再起動する
    30 21 * * * /etc/init.d/smb restart
    

    5.7毎月1、10、22日の4:45 smbを再起動する
    45 4 1,10,22 * * /etc/init.d/smb restart
    

    5.8毎週土曜日、日曜日の1:10にsmbを再起動する
    10 1 * * 6,0 /etc/init.d/smb restart
    

    5.9毎日18:00から23:00の間に30分おきにsmbを再起動する
    0,30 18-23 * * * /etc/init.d/smb restart
    

    5.10毎週土曜日の夜11:00 pmでsmbを再起動
    0 23 * * 6 /etc/init.d/smb restart
    

    5.11毎時間smbを再起動する
    * */1 * * * /etc/init.d/smb restart
    

    5.12夜11時から朝7時まで、1時間おきにsmbを再起動します
    * 23-7/1 * * * /etc/init.d/smb restart
    

    5.13毎月の4日と毎週月曜日から水曜日の11時にsmbを再起動します
    0 11 4 * mon-wed /etc/init.d/smb restart
    

    5.14 1月1日の4時にsmbを再起動します
    0 4 1 jan * /etc/init.d/smb restart
    

    5.15 1時間あたり/etc/cron.hourlyディレクトリ内のスクリプトを実行
    01 * * * * root run-parts /etc/cron.hourly
    

    5.16計画タスクの作成、編集
    [root@itcast ~]# crontab -e
    

    5.17現在の計画タスクの表示
    [root@itcast ~]# crontab -l
    

    5.18計画タスクの削除
    [root@itcast ~]# crontab -r
    

    06.付録


    参考:【Linux】一歩一歩Linuxシリーズチュートリアル概要参考:【Linux】crontabコマンド詳細