Linux crontabコマンドタイミング実行


crontabコマンドは、いくつかのタイミングタスクを実行するために使用されます.
コマンドフォーマット:minute hour day month weekday command値範囲:(0-59)(0-24)(1-31)(1-12)(0-6)
システムはいくつかの特殊な記号を提供し、時間の表現を柔軟にします.
(*)は値範囲内のすべての数字(/)は間隔を表します..時間、*/5は5時間単位(-)ごとに連続期間(,)を表し、複数の数字を列挙するために用いられる
例:
0 0 * * 1 echo Monday >>/home/test.txt-毎週月曜日の未明に実行
* * * * date >>/home/date.txt-毎分1回実行
*/10 * * * 1-3 echo “ten minutes pasted” >>/home/time.txt-月曜日から水曜日まで10分ごとに実行します.
通常、システムはユーザーが計画書を直接編集することを許可しません./var/spool/cron/crontabsディレクトリもrootユーザーだけが読み書きできます.計画書の管理を容易にするために、システムはcrontabコマンドを提供します.
使用方法:
crontab[-u user]ファイル名
crontab [ -u user ] { -l | -r | -e }
-u計画書に属するユーザー、デフォルトは現在のユーザー
-l現在の計画書の内容をリストする
-e計画書を編集し、システムのデフォルトのエディタはviです.保存すると、フォーマットが要求に合っているかどうかを確認します.
-r計画書の削除
 
例:
#crontab -u oracle/home/oracle/plan.txtはplan.txtユーザーoracleの計画書を提出
#crontab/home/myplan.txtはmyplan.txt現在のユーザのための計画書#contab-rをコミット現在の計画書をクリア
 
 
 
—————————————————引用したもう一つの文章—————————————
CentOSを例にとります.概要:
cronはギリシャ語のchronos(「時間」を意味する)に由来し、linuxシステムが指定したタスクを自動的に実行するプログラムである.たとえば、毎晩寝ている間にファイルやフォルダのバックアップを作成したい場合は、cronを使用して自動的に実行できます.
CentOSのcronはデフォルトでは起動していますが、起動していない場合はchkconfigを使用できます.
[root@chenlb-pc ~]# chkconfig crond on
crondが起動しているかどうかを確認します
[root@chenlb-pc ~]# chkconfig –list crond
crond 0:閉じる1:閉じる2:有効3:有効4:有効5:有効6:閉じる
既に起動していることを示します.
cronはcrontabのタスクを実行するので、crontabにタスクを追加します.
1.現在のユーザーのタスクを表示します.
[chenlb@chenlb-pc ~]$ crontab -l
no crontab for chenlb
まだタスクはありません.crontab-eでタスクを編集できます(crontabを直接入力して新規作成し、車に戻ってCtrl+Dで保存できます.以前のものを上書きするので注意してください.crontabを直接使用することはお勧めしません).それから、新しいファイルに以下の内容を入力します.
2.タスクの編集
[chenlb@chenlb-pc ~]$ crontab -e
*/1 * * * * echo `date` >> /home/chenlb/cron-log.txt
上記の意味は、毎分印刷時間を/home/chenlb/cron-logに置くことを意味する.txtファイルでは、1分後に有効かどうかを見て、次のコマンドを実行します.
[chenlb@chenlb-pc ~]$ tail /home/chenlb/cron-log.txt
Wed Jul 2 15:43:01 CST 2008
3.タスクの削除
[chenlb@chenlb-pc ~]$ crontab -r
説明:rootの場合、以上の機能に加えて、-uパラメータはchenlbでタスクを編集するなど、ユーザーにタスクを表示、編集、削除します.
[root@chenlb-pc ~]# crontab -u chenlb -e
タスクの構文を説明します:min hour day month week user command
無視は「*」、各数は「/いくら」、複数は「,」、関係には「-」
———————————html lor’s blogからの例———————————————以下はcron文のフィールドとフィールドの説明です.
フィールド
説明
1
分(0-59)
2
時間(2-24)
3
日付(1-31)
4
月(1-12;または英語略称Jan、Febなど)
5
曜日(0-6、0は日曜日、またはSun、Monなど)
6
ユーザー名(コマンド実行時にこのユーザーとして)
7
実行するコマンド(パス)
 
 
最初の行を見てみましょう.

  
  
  
  
12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

この文は、毎日午前3時12分(03:12)にtar czf /usr/local/backups/daily/etc.tar.gz /etcコマンドを実行します.>> /dev/null 2>&1は、すべての標準出力を/dev/null(linuxの回収局)に送信し、標準エラー出力(2)を標準出力(1)と同じ場所(すなわち/dev/null)に送信することを示す.このコマンドを実行しても、出力は発生しません.
この文は少し複雑になります.

  
  
  
  
30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

6月13日月曜日の15:30にtar czf /usr/local/backups/daily/etc.tar.gz /etcコマンドを実行します.
次の文は、同じ効果を達成します.

  
  
  
  
30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

ユーザーjoeyとして1時間の15分目にプログラムを実行したい場合は、次の操作を行います.

  
  
  
  
15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

アスタリスク(*)はワイルドカードで、cronがこのフィールドを無視することを示します.
2時間ごとにプログラムを実行したい場合は、時間フィールドで*/2を使用します.2時、4時、6時......22時、24時に実行されます.具体的な文は次のとおりです.

  
  
  
  
0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1

cron文では、カンマ(,)を使用して複数の時間を指定することもできます.たとえば、1時間あたり15分と30分にプログラムを実行したい場合は、分フィールドで15,30を使用します.

  
  
  
  
15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

プログラムを毎月の最初の週(1日から7日まで)の毎日の指定時間に実行したい場合は、日付フィールドで1-7を使用します.

  
  
  
  
15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1

この文は、毎月1~7日の2時間ごとに15分と30分(02:15、02:30…22:15、22:30など)に/usr/bin/somecommandコマンドを実行します.
毎日16:18に1つのスクリプトセットを実行したい場合は、/home/username/cronなど、実行するすべてのスクリプトを1つのディレクトリに配置して使用できます.

  
  
  
  
18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1

プログラムの出力結果を保存したい場合は、>> /dev/null 2>&1>> /home/user/somecommand.log 2>&1に置き換えることができます.