Linux計画タスク-crontab
5071 ワード
cronの概要
cron
UNIX、SOLARIS、LINUXの下にある非常に有用なツールです.cron
スクリプトにより、計画タスクを定期的にシステムバックグラウンドで自動的に実行できます.cronコマンド
crontab -e
–当該ユーザのcrontabを編集し、crontabが存在しないことを指定した場合に新規作成する.crontab -l
–当該ユーザのcrontabをリストする.crontab -r
–当該ユーザのcrontabを削除する.crontab -u< >
–crontabを設定するユーザー名を指定します.Linux Crontab形式
表:Crontabフィールドと許容値(Linux Crontab)
フィールド
説明
許容値
分
1時間の何分か
0-59
時間
1日の何時間目
0-23
日付
一ヶ月の何日目
1-31
月
1年の数ヶ月目
1-12
曜日
週の何日目
0-6
コマンド#コマンド#
コマンド#コマンド#
実行可能な任意のコマンド
cronインスタンス
1.特定時間実行
cronの基本的な使い方は、6月10日午前8時30分にFull backup shell scriptを実行するタスクを特定の時間に実行することです.時間フィールドは24時間制で、午後8時の場合は20時に書き換えられます
30 08 10 06 * /home/ramesh/full-backup
30
–30分目08
–朝8時10
–10号06
–6ヶ月目(6月)*
–1週間のいずれかの日2.複数のインスタンスのスケジュール(1日に2回)
次のインクリメンタル・バックアップ・スクリプトは、1日に2回実行されます.
毎日11:00、16:00に実行され、カンマの両側の時間に実行されます.
00 11,16 * * * /home/ramesh/bin/incremental-backup
00
–0分目(時間毎)11,16
–朝11時と午後4時*
–毎日*
–毎月*
–1週間のいずれかの日3.タスクを特定の時間にのみ実行させる(たとえば平日のみ実行させる)
次の例は、データベースのステータス(土曜日を含む)を毎日9:00-16:00にチェックします.
00 09-18 * * * /home/ramesh/bin/check-db-status
00
–0分目(時間毎)09-18
–9時、10時、11時、12時、午後1時、午後2時、午後3時、午後4時、午後5時、午後6時*
–毎日*
–毎月*
–1週間のいずれかの日00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
00
–0分目(時間毎)09-18
–9時、10時、11時、12時、午後1時、午後2時、午後3時、午後4時、午後5時、午後6時*
–毎日*
–毎月1-5
–月曜、火曜、水曜、木曜、金曜(平日)4.cronタイミングタスクの表示方法
現在のユーザータイミングタスクの表示
ramesh@dev-db$ crontab -l
ROOTユーザータイミングタスクを確認し、rootでsu-rootに登録し、再実行
crontab -l
root@dev-db# crontab -l
no crontab for root
他のユーザータイミングタスクの表示
root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status
5.cronタイミングタスクの編集方法
ramesh@dev-db$ crontab -e
6.毎分スケジュールされたタスクを実行
理論的には、毎分実行するshellはありませんが、次の例ではcrontabをよりよく理解してみましょう.
* * * * *
*
取れる可能性のあるすべての値を表し、そのまま*
のほか、以下の例もよく用いられる*/5
分フィールドで5分ごとを表す.0-10/2
分フィールドでは、最初の10分を2分ごとに表す7.バックグラウンドで10分ごとにタイミングタスクを実行する
*/10 * * * * /home/ramesh/check-disk-space
いくつかの特殊な例があり、上記の5つのフィールドをキーワードで置き換えることができます–
reboot
、midnight
、yearly
、hourly
Table: Cron special keywords and its meaning Keyword
Equivalent
@yearly
0 0 1 1 *
@daily
0 0 * * *
@hourly
0 * * * *
@reboot
再起動時に実行
8.毎年の最初の分にタイミングタスクを実行(@yearly)
次の例は、毎年1月1日0:00に実行されます.
@yearly /home/ramesh/red-hat/bin/annual-maintenance
9.毎月タイミングタスクを実行(@mothly)
次の例は、毎月1日0:00に実行されます.
@monthly /home/ramesh/suse/bin/tape-backup
10.定時タスクを毎日実行(@daily)
次の例は毎日0:00に実行されます.
@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"
11.再起動のたびにタイミングタスクを実行(@reboot)
@reboot CMD
12.mailキーワードでcronのメールを禁止/リダイレクトする方法
デフォルトでは、crontabはタイミングタスクをスケジュールした管理者にメールを送信し、このユーザーにリダイレクトしたい場合はMAILを追加して更新します.
ramesh@dev-db$ crontab -l
MAIL="ramesh"
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
誰にも受け取りたくない場合は、MAILをそのまま空にします
13.秒ごとに1つのタイミングタスクを実行する方法
最小処理ユニットが分であるため、毎秒実行を手配できません.一方、毎秒1つのタスクを実行する理由はありません.
14.cronのPATH変数
上の例はすべて絶対的な経路で
相対的なパスを使用する場合は、環境変数をcrontabで追加できます.
ramesh@dev-db$ crontab -l
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh
@yearly annual-maintenance
*/10 * * * * check-disk-space
15.cronファイルからcronタスクを定義する
直接編集するほか、1つのファイルでタスクを編集してからインポートすることもできます.
ramesh@dev-db$ crontab -l
no crontab for ramesh
$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
ramesh@dev-db$ crontab cron-file.txt
ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
この操作は、既存のcronタスクを削除することに注意してください.
http://justjavac.com/other/2013/09/22/linux-scheduled-task-crontab.html