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.コマンドパラメータ
3.crontabのファイル形式
時分割日月週に実行するコマンド
新しい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.注意事項
環境変数の問題に注意
注意システムユーザーのメールログを整理する各タスクのスケジュールが完了すると、システムはタスク出力情報を電子メールの形式で現在のシステムユーザーに送信します.これにより、日々蓄積され、ログ情報が非常に大きくなり、システムの正常な運行に影響を与える可能性があります.そのため、各タスクをリダイレクト処理することが重要です.たとえば、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'に変更する必要があります.