Linux crondタイミングタスクサービス

5300 ワード

Linuxのタイミングタスクサービスcrond(crontab)
crondとは何ですか.
crondはlinuxシステムでコマンドを定期的に実行したり、プログラムタスクを指定したりするためのサービスまたはソフトウェアです.
一般的にC 5/C 6システムのインストールが完了すると、crondはデフォルトで存在します.
crondサービスのデフォルト(毎分)では、システムに実行するタイミングタスクがあるかどうかを確認し、ある場合は事前に定義されたルールに従ってこのタイミングタスクを実行します.たとえば、rootユーザーのタイミングタスク構成文は/var/spool/cron/rootです.
crondサービス=目覚まし時計
デフォルトでは、ユーザがタイミングタスクルールを確立すると、そのルールレコードに対応するプロファイルは/var/spool/cronに存在し、そのcrontabプロファイルに対応するファイル名はログインしたユーザ名と一致し、
crontabタイミングタスクの書式は簡単で、ユーザーのタイミングタスクルールは一般的に6つのセグメント(各セグメントはスペースで区切られ、システムのタイミングタスクは/etc/crontabで、8セグメントに分けられ、スペースで区切られる)に分けられ、最初の5つの期間の設定セグメント、6番目のセグメントは実行するコマンドまたはスクリプトタスクセグメントである.
関連プロファイル:
/var/spool/cron/ディレクトリの下に保存されているのは、作成者の名前で命名されたrootを含むcrontabタスクです.
/etc/crontabこのファイルは、さまざまな管理およびメンテナンスタスクのスケジュールを担当します.
/etc/cron.d/このディレクトリは、実行するcrontabファイルまたはスクリプトを格納するために使用されます.
スクリプトを/etc/conに置くこともできます.hourly、/etc/con.daily、/etc/con.weekly、/etc/con.monthlyディレクトリでは、1時間/日/週、月に1回実行させます.
/etc/cron.denyこのファイルにリストされているユーザーはctrontabコマンドを使用できません.
/etc/cron.allowこのファイルに記載するユーザは、/etc/cronよりもcrontabコマンドを使用することを許可する.deny
一般的なコマンドの説明:
パラメータ
意味

-l(アルファベット)
crontabファイルの内容を表示します.ヒント:lはlistの略と理解できます.
crontab -l***
-e
crontabファイルの内容を編集します.ヒント:eはeditの略と理解できます.
crontab -e***
-i
crontabファイルの内容を削除すると、削除前に確認を求めるメッセージが表示されます.使うことが少ない.
crontab -ri
-r
crontabファイルの内容を削除するには、あまり使いません.
crontab -r
-u user
使用するユーザーがタスクを実行することを指定します.
crontab -u zdw -l
特に、-i,-rパラメータは生産ではあまり使われず、-eで編集しなければならない必要はありません.
現在のユーザーのワークシート編集にcrontab-eを使用します(crontab-e編集では構文がチェックされますが、直接echo、vi編集では構文はチェックされません).各行は編集コマンドです.
/etc/crontabファイルの表示
[root@w ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# 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

上図を説明すると、crontab構文フォーマットの期間の意味は以下の通りです.
セグメント
意味
値範囲
第1段落
分を表す
  00--59
セクション2
代表時間
  00--23
第3段
代表日
  01--31
セクション4
月を表す
  01--12
第五段
曜日を代表して
0~7(0と7は日曜日)
時間記憶口決:分時日月週間
crontab構文フォーマットの特殊な記号の意味は次の表の通りです.
特殊記号
意味
     *
*号は、任意の時間を表すが、実際には「毎」の時間を意味する.例:00 23**cmdのように、毎月毎日23:00にcmdタスクを実行していることを示します.なお、各時間ビットの*は、各を表し、ビットが*である場合、例えば、時間の*は00-23に等価である.経験:定時タスクルールは時間になると、毎日まで言及されます.周待つことは言うまでもない.分位上の*は0-59に等しい
     -
マイナス記号は、区切り記号を表し、時間範囲、区間区間を表し、17-19点の場合、毎日の17、18、19の00分にタスクを実行します.00 17-19 * * * cmd.17,18,19時ちょうどにそれぞれ実行するという意味です.
     ,
時間帯を区切る意味のカンマ.30 17,18,19 * * */bin/sh/scripts/zdw.shは、毎日17、18、19時の半時点で/scripts/zdwが実行することを示す.shスクリプト.例えば、30-5、17-19**/bin/sh/scripts/zdw等の「-」と組み合わせて用いることもできる.sh
     /n
nは、例えば、10分ごとにタスクを実行する場合、*/10****と書くことができ、*/10、*の範囲は0-59であるため、0-59/10と書くこともできる.
タイミングタスクを作成したが実行されていない場合は、crondサービスが起動していないかどうかを確認する必要があります.起動していない場合は、タイミングタスクを使用するには起動する必要があります.
タイミングタスクの表示とオープン:
[root@w ~]# /etc/init.d/crond status               #  crond                       
crond is stopped
[root@w ~]# /etc/init.d/crond restart              #  crond  
Starting crond:                                            [  OK  ]

コマンドの例:
1.30 3,12 * * */bin/sh/scripts/zdw.sh
本例では、第1列は30分、第2列は3,12である、これは3時および12時を表す、このタイミングタスクは、毎日午前3時および昼12時の半時刻(または、毎日午前3:30および昼12:30と記載されている)に実行する/scripts/zdwを意味する.shスクリプト.
2.30 */6 * * */bin/sh/scripts/zdw.sh
このうち第1列は30分であり、第2列*/6は6時間ごとを表し、6,12,18,24の役割にも相当する.
このタイミングタスクは、6時間半毎に/scripts/zdwを実行することを意味する.shスクリプトタスク.
3.30 8-18/2 * * */bin/sh/scripts/zdw.sh
その中の第1列は30分であり、第2列の8-12/2は朝8時から午後18時までの間に2時間おきに表され、8,10,12,14,16,18単独で列挙された役割にも相当する.
では、このタイミングタスクは、朝8時から午後18時までの間に2時間おきの30分毎に/scripts/zdwを実行することを意味する.shスクリプトタスク.
4.30 21 * * */application/apache/bin/apachectl graceful
上記の例は、毎晩21:30にapacheを再起動することを示しています.
5.45 4 1,10,22 * */application/apache/bin/apachectl graceful
上記の例は、毎月1、10、22日午前4:45にapacheを再起動することを示しています.
6.10 1 ** 6,0/application/apache/bin/apachectl graceful
上記の例は、毎週6、日曜日の午前1:10にapacheを再起動することを示しています.
7.0,30 18-23 * * */application/apache/bin/apachectl graceful
上記の例では、apacheを毎日18:00から23:00の間に30分おきに再起動することを示しています.
8.00 */1 * * */application/apache/bin/apachectl graceful
上記の例では、apacheを1時間おきに完全に再起動することを示しています.
9.00 11 * 4 1-3/application/apache/bin/apachectl graceful
上記の例は、4月の週1~水曜日の午前11時ちょうどにapacheを再起動することを示しています.
周と日はできるだけ同时に使わないでください.そうしないと、希望の効果が得られないかもしれません.
ログの保存場所と結果の表示:
[root@w /]# ll /var/log/cron*
-rw-------. 1 root root 34683 May  5 16:02 /var/log/cron
-rw-------. 1 root root 40839 Apr 24 03:31 /var/log/cron-20160424
-rw-------. 1 root root 50227 May  1 03:37 /var/log/cron-20160501
[root@w /]# tail -f /var/log/cron
May  5 15:01:01 localhost run-parts(/etc/cron.hourly)[16907]: finished 0anacron
May  5 15:30:27 localhost crontab[16947]: (root) BEGIN EDIT (root)
May  5 15:31:28 localhost crontab[16947]: (root) END EDIT (root)

学習自:老男の子