【Linux】Linux-crontabコマンドを一歩一歩学ぶ(132)
6915 ワード
00.目次
文書ディレクトリ
01.コマンドの概要
crontabは英語の「cron table」の略です.このコマンドは、windowsの下の計画タスクと同様に、ユーザーの周期的な実行を必要とするタスクをコミットおよび管理するために使用されます.オペレーティングシステムのインストールが完了すると、デフォルトでこのサービスツールがインストールされ、crondプロセスが自動的に起動します.crondプロセスは毎分、実行するタスクがあるかどうかを定期的にチェックし、実行するタスクがある場合は自動的に実行します.
Linuxでのタスクスケジューリングは,システムタスクスケジューリングとユーザタスクスケジューリングの2つに分類される.
≪システム・タスクのスケジュール|System Task Schedule|emdw≫:キャッシュ・データをハード・ディスクに書き込み、ログのクリーンアップなど、システムが周期的に実行する作業./etc/crontabファイルは、システムタスクスケジューリングのプロファイルです.≪ユーザー・タスク・スケジュール|User Task Schedule|emdw≫:ユーザーが定期的に実行する作業.たとえば、ユーザーのデータ・バックアップ、タイミング・メール・アラートなどです.ユーザーはcrontabツールを使用して、自分の計画タスクをカスタマイズできます.すべてのユーザー定義crontabファイルは/var/spool/cronディレクトリに保存されます.ファイル名はユーザー名と一致します.
02.コマンドフォーマット
:crontab [ ]
03.一般的なオプション
-e: ;
-l: ;
-r: ;
-u< >: 。
04.知識備蓄
Linuxでのタスクスケジューリングは,システムタスクスケジューリングとユーザタスクスケジューリングの2つに分類される.
**システムタスクのスケジュール:**システムが定期的に実行する作業.例えば、キャッシュデータをハードディスクに書き込み、ログのクリーンアップなど.
/etc
ディレクトリの下にcrontabファイルがあります.これがシステムタスクスケジューリングのプロファイルです./etc/crontab
ファイルには、次の行が含まれています.SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 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
最初の4行はcrondタスクの実行を構成するための環境変数です.
最初の行のSHELL変数は、システムがどのshellを使用するかを指定します.ここではbashです.
2行目のPATH変数はシステムが命令を実行する経路を指定し、
3行目のMAILTO変数crondを指定したタスク実行情報はrootユーザに電子メールで送信され、MAILTO変数の値が空の場合はタスク実行情報をユーザに送信しないことを示す
4行目の計画タスクの例
**ユーザータスクのスケジュール:**ユーザーが定期的に実行する作業、例えばユーザーデータのバックアップ、タイミングメールの注意など.ユーザーはcrontabツールを使用して、自分の計画タスクをカスタマイズできます.すべてのユーザ定義crontabファイルは
/var/spool/cron
ディレクトリに保存されます.ファイル名はユーザー名と一致し、ユーザー権限ファイルは次のとおりです./etc/cron.deny crontab
/etc/cron.allow crontab
/var/spool/cron/ crontab ,
crontabファイルの意味:ユーザーが作成したcrontabファイルでは、各行はタスクを表し、各行の各フィールドは設定を表し、そのフォーマットは6つのフィールドに分けられ、最初の5つは時間設定セグメントで、6番目のセグメントは実行するコマンドセグメントで、フォーマットは以下の通りです.
minute hour day month week command :
次のようになります.
上記のフィールドでは、次の特殊文字も使用できます.
crontabサービスステータスの表示
[deng@itcast ~]$ systemctl status crond.service
crontabサービスを手動で開始
[deng@itcast ~]$ systemctl start crond.service
crontabサービスが起動に設定されているかどうかを確認し、コマンドを実行します.
[root@itcast ~]# ntsysv
電源投入自動起動
[root@itcast ~]# systemctl enable crond.service
05.参考例
5.1 1分ごとにcalを実行
* * * * * cal
5.2時間ごとの3分目と15分目の実行
3,15 * * * * cal
5.3午前8時から11時までの3分目と15分目に実行
3,15 8-11 * * * cal
5.4 2日おきの午前8時から11時までの3分目と15分目に実行
3,15 8-11 */2 * * cal
5.5毎週月曜日の午前8時から11時までの第3分と第15分に実行する
3,15 8-11 * * 1 cal
5.6毎晩の21:30にsmbを再起動する
30 21 * * * /etc/init.d/smb restart
5.7毎月1、10、22日の4:45 smbを再起動する
45 4 1,10,22 * * /etc/init.d/smb restart
5.8毎週土曜日、日曜日の1:10にsmbを再起動する
10 1 * * 6,0 /etc/init.d/smb restart
5.9毎日18:00から23:00の間に30分おきにsmbを再起動する
0,30 18-23 * * * /etc/init.d/smb restart
5.10毎週土曜日の夜11:00 pmでsmbを再起動
0 23 * * 6 /etc/init.d/smb restart
5.11毎時間smbを再起動する
* */1 * * * /etc/init.d/smb restart
5.12夜11時から朝7時まで、1時間おきにsmbを再起動します
* 23-7/1 * * * /etc/init.d/smb restart
5.13毎月の4日と毎週月曜日から水曜日の11時にsmbを再起動します
0 11 4 * mon-wed /etc/init.d/smb restart
5.14 1月1日の4時にsmbを再起動します
0 4 1 jan * /etc/init.d/smb restart
5.15 1時間あたり
/etc/cron.hourly
ディレクトリ内のスクリプトを実行01 * * * * root run-parts /etc/cron.hourly
5.16計画タスクの作成、編集
[root@itcast ~]# crontab -e
5.17現在の計画タスクの表示
[root@itcast ~]# crontab -l
5.18計画タスクの削除
[root@itcast ~]# crontab -r
06.付録
参考:【Linux】一歩一歩Linuxシリーズチュートリアル概要参考:【Linux】crontabコマンド詳細