linuxのループ実行タスク


  • 概要linuxでは、crondサービスは周期的な計画タスクを実現するツールの一つであり、crondサービスは所定の時間に設定されたコマンド、スクリプトを実行することができ、windowsの下の「計画タスク」のような機能を持っている.マルチユーザマルチタスクのlinuxシステムでは、各ユーザが独自のcrontabを設定でき、/var/spool/cron/このディレクトリの下に計画タスクの作成ユーザと同じ名前のファイルが作成されます.ファイルの内容は、このユーザが「crontab-e」コマンドを使用して作成した計画タスクです.計画タスクの実行のたびにcrondは実行したログを/var/log/cronというログファイルに記録し、このファイルを通じてある時間、crondプログラムがどの命令を実行したかを知る.システム管理者としてcrontabの利用者、/etc/cronを限定することができる.allowと/etc/cron.denyこの2つのファイルは権限の設定をしに来たので、一般的には1つのファイルだけを残しておけばいいです./etc/cronだけを残しておけばいいです.denyというアーカイブは、アーカイブの内容が1行1人のユーザーのユーザー名であり、このアーカイブのユーザーが計画タスクの機能を使用できないことを示し、このアーカイブ内の他のユーザーが計画タスクの機能を使用できないことを示しています.
  • コマンドフォーマット
  • 計画タスクを作成するときにcrontabというツールを使用して設定します.crontabの一般的なオプションは「-e」と「-l」です.
    -e:edit、計画タスクリストの編集を表します
    -l:list、計画タスクのリストを示す
    [root@zhaochj ~]# crontab -e

    計画タスクの設定には、2つの要素が含まれます.1つは時間です.二つ目は命令です.つまり、いつどのような命令が実行されるかということです.
    cronの構文フォーマット:5つの時間フィールド、1つの命令フィールド
    タイムシェアリング日月週指令
    時間の値範囲:
                 field          allowed values
                 -----          --------------
                 minute         0-59
                 hour           0-23
                 day of month   1-31
                 month          1-12 (or names, see below)
                 day of week    0-7 (0 or 7 is Sun, or use names)
    この5つの時間フィールドでは、いくつかの特殊な記号を使用できます.
    *:いつでも
    ,:時間分割を表します.たとえば「分」というフィールドの値が「1,15」であると、第1分、第15分の2つの時刻を表します.
    -:時間を表します.「時」フィールドの値が「2-5」の場合、午前2時から午前5時までの時間範囲を表します.
    /n:nは整数を表します.たとえば、「日」というフィールドの値が「*/1」の場合、1日おきにコマンドを実行することを表します.
  • 期間のいくつかの例4321**21:43実行15 05**05:15実行0 17**17:00実行0 17**1毎週1の17:00実行0,10 17*0,2,3毎週火曜日、水曜17:00と17:10実行0-10 17 1**毎月1日17:00から17:10まで1分おきに0 0 1,15*1毎月1日と15日と月曜日の0:00実行42 4*毎月1日の4:42分実行0 21*1-6月曜日から土曜21:00まで0,10,20,30,40,50***10分おきに実行*/10****1***1:0から1:59まで1分おきに0 1****0:1:00に0*/1****毎時0分に1時間おきに0****毎時0分に1時間おきに2 8-20/3**8:02,11:02,14:02,17:02,20:02に30 5,1,15**を毎月1日と15日の5:30に
  • を実行します.
  • バックアップスクリプトとcronを組み合わせた自動バックアップのインスタンス
  • バックアップ・スクリプトは次のとおりです.
    [root@zhaochj ~]# vim autoback.sh
    #!/bin/sh
    #
    #author: Jack.zhao
    #Date: 2013-11-29
    #Email: [email protected]
    #Description: This script backup file
    DATE=$(/bin/date +%Y%m%d)
    BASENAME=$(basename $1)
    [ -d /backup ] || /bin/mkdir /backup
    /bin/tar -czf /backup/$BASENAME.$DATE.tar.gz $1 1> /dev/null 2>> /backup/$BASENAME.error.log
    if [ $? -eq 0 ]
            then
                    echo "$1 $DATE backup successfully" >> /backup/$BASENAME.success.log
            else
                    echo "ERROR:failure $1 $DATE backup!" >> /backup/$BASENAME.error.log
    fi
    [root@zhaochj ~]# chmod +x /root/autoback.sh

    このスクリプトの使用方法:
    [root@zhaochj ~]# ./autoback.sh /etc/fstabefsg

    スクリプトの準備ができたら、計画タスクを設定します./homeディレクトリに自動バックアップを行いたい場合は、毎月の1日、15日の午前3時15分にバックアップを行う必要があります.
    [root@zhaochj ~]# crontab -e
    15 3 1,15 * *    /root/autoback.sh /home