linux crontabタイミングタスク

4192 ワード

crontabコマンドにより、指定したシステムコマンドまたはshell scriptスクリプトを一定の間隔で実行できます.時間間隔の単位は、分、時間、日、月、週以上の任意の組み合わせであってもよい.このコマンドは、周期的なログ分析やデータバックアップなどの作業に適しています.すべてのユーザ定義crontabファイルは、/var/spool/cronディレクトリに保存されます.ファイル名はユーザー名と一致します.
brew install crontabs

使用者権限ファイル:ファイル:/etc/cron.denyの説明:このファイルにリストされているユーザーはcrontabコマンドを使用できません.
ファイル:/etc/cron.allow説明:このファイルにリストされているユーザーはcrontabコマンドの使用を許可します.
ファイル:/var/spool/cron/説明:すべてのユーザーcrontabファイルに格納されているディレクトリをユーザー名で命名
1.コマンドフォーマット
crontab [-u user] file 
crontab [-u user] [ -e | -l | -r ]

2.コマンドパラメータ
  • -u user:あるユーザを設定するためのcrontabサービス;
  • file:fileはコマンドファイルの名前で、fileをcrontabのタスクリストファイルとしてcrontabにロードすることを示します.コマンドラインにこのファイルが指定されていない場合、crontabコマンドは標準入力(キーボード)に入力されたコマンドを受け入れ、crontabにロードします.
  • -e:ユーザーのcrontabファイルの内容を編集します.ユーザーを指定しない場合は、現在のユーザーのcrontabファイルを編集します.
  • -l:あるユーザのcrontabファイルの内容を表示し、ユーザを指定しない場合、現在のユーザのcrontabファイルの内容を表示する.
  • -r:/var/spool/cronディレクトリからユーザーのcrontabファイルを削除し、ユーザーを指定しない場合は、現在のユーザーのcrontabファイルをデフォルトで削除します.
  • -i:ユーザーのcrontabファイルを削除するときに確認メッセージを表示します.

  • 3.crontabのファイル形式
    時分割日月週に実行するコマンド
  • 第1列分0~59
  • 第2列時間0~23(0は子夜を表す)
  • 第3列日1~31
  • 第4列月1~12
  • 第5列曜日0~7(0と7は日曜日)
  • 第6列実行するコマンド
  • 4.一般的な方法
    新しいcrontabファイルを作成してcronプロセスにcrontabファイルをコミットする前に、まず環境変数EDITORを設定します.cronプロセスは、どのエディタを使用してcrontabファイルを編集するかを決定します.UNIXとLINUXのユーザーの9%がviを使用しています.もしあなたもそうであれば、$HOMEディレクトリの下を編集します.profileファイルには、次の行が含まれます.
    EDITOR=vi; export EDITOR
    

    保存して終了します.cronという名前のファイルを作成してみてください.ユーザー名、例えばdavecronです.このファイルに次のような内容を加えます.
    # (put your own initials here)echo the date to the console every
    # 15minutes between 6pm and 6am
    0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console
    

    保存して終了します.前の5つのドメインはスペースで区切られています.
    上記の例では、システムは現在の時間を1、5分おきにコンソールに出力します.システムがクラッシュしたり停止したりすると、最後に表示された時間から、システムがいつ停止したかが一目でわかります.一部のシステムでは、tty 1でコンソールを表し、実際の状況に応じて上記の例を修正することができる.作成したばかりのcrontabファイルをコミットするには、この新しく作成したファイルをcronコマンドのパラメータとして使用します.
    crontab davecron
    

    このファイルはcronプロセスにコミットされ、1 5分おきに実行されます.同時に、新しく作成したファイルのコピーが/var/spool/cronディレクトリに配置され、ファイル名はユーザー名(dave)です.
    crontabファイルのリスト-lパラメータを使用してcrontabファイルをリストします.
    $ crontab -l
    0,15,30,45 18-06 * * * /bin/echo `date` > dev/tty1
    

    この方法では、$HOMEディレクトリでcrontabファイルをバックアップできます.
    $ crontab -l > $HOME/mycron
    

    これにより,crontabファイルを誤って削除すると,前節で述べた方法で迅速に復元できる.
    crontabファイルを編集crontabファイルのエントリを追加、削除または編集し、EDITOR環境変数をviに設定する場合は、viを使用してcrontabファイルを編集できます.
    $ crontab -e
    

    注意:crontabファイルの各エントリにコメントを追加すると、その機能、実行時間、さらに重要なのは、どのユーザーのタイミングジョブなのかを知ることができます.
    crontabファイルの削除
    $ crontab -r
    

    5.使用例
    # 1. 1      myCommand
    * * * * * myCommand
    
    # 2.     3  15    
    3,15 * * * * myCommand
    
    # 3.     8  11   3  15    
    3,15 8-11 * * 1 myCommand
    
    # 4.   11    7   ,       smb
    0 23-7 * * * /etc/init.d/smb restart
    

    6.注意事項
    環境変数の問題に注意
  • スクリプトにファイルパスが含まれている場合は、グローバルパスを書きます.
  • スクリプトjavaまたは他の環境変数を使用する場合、sourceコマンドにより環境変数
  • が導入される.
  • 手動でスクリプトを実行してOKですが、crontabが死活して実行されない場合、環境変数が原因である可能性が高いので、crontabに環境変数を直接導入して問題を解決してみてください.

  • 注意システムユーザーのメールログを整理する各タスクのスケジュールが完了すると、システムはタスク出力情報を電子メールの形式で現在のシステムユーザーに送信します.これにより、日々蓄積され、ログ情報が非常に大きくなり、システムの正常な運行に影響を与える可能性があります.そのため、各タスクをリダイレクト処理することが重要です.たとえば、crontabファイルでログ出力を無視する形式を設定できます.
    0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1
    

    「/dev/null 2>&1」は、標準出力を/dev/nullにリダイレクトし、標準エラーを標準出力にリダイレクトすることを意味します.標準出力は/dev/nullにリダイレクトされているため、標準エラーも/dev/nullにリダイレクトされ、ログ出力の問題が解決します.
    その他の注意事項新しく作成されたcron jobは、すぐに実行されず、少なくとも2分後に実行されます.cronを再起動するとすぐに実行されます.
    crontabが無効になった場合、/etc/initを試みることができる.d/crond restart問題を解決します.または、jobがtail-f/var/log/cronを実行/エラーしているかどうかをログで確認します.
    crontab-rをむやみに実行しないでください.Crontabディレクトリ(/var/spool/cron)からユーザーのCrontabファイルを削除します.このユーザーを削除したcrontabはすべてなくなりました.
    crontabでは%が特殊な意味を持ち、改行の意味を表す.使用する場合はエスケープ%が必要ですが、よく使うdate'+%Y%m%d'はcrontabでは実行されませんので、date'+%Y%m%d'に変更する必要があります.