ホームページ  >  記事  >  運用・保守  >  Linux でのスケジュールされたタスク - 定期的に実行されるスケジュールされたタスク

Linux でのスケジュールされたタスク - 定期的に実行されるスケジュールされたタスク

齐天大圣
齐天大圣オリジナル
2020-11-07 22:42:003089ブラウズ

at コマンドは以前の記事でも紹介しましたが、一度だけ実行するスケジュールされたタスクを設定するために使用されます。今日は、定期的に実行されるスケジュールされたタスクを見てみましょう。仕事では、システム ファイルの定期的なバックアップ、データベース ファイルの定期的なバックアップ、長期間支払われていない注文の処理など、定期的にスケジュールされたタスクがよく使用されます。

ユーザーが定期的なスケジュールされたタスクを設定する crontab

通常、ユーザーが定期的なスケジュールされたタスクを設定したい場合は、crontab コマンドを使用する必要があります。 。 at と同様に、crontab にもブラックとホワイトのリストがあり、設定ファイルは -/etc/cron.deny、/etc/cron.allow です。

ユーザーがスケジュールされたタスクを設定すると、タスクは /var/spool/cron ディレクトリにテキスト ファイルとして記録されます。

# ll /var/spool/cron/
total 4
-rw------- 1 root root 98 Jul 28 03:58 root

crontab に関しては、2 つのコマンドを覚えておくだけで済みます。

  • crontab -e スケジュールされたタスクの設定

  • crontab - l スケジュールされたタスクの表示

スケジュールされたタスクを設定するための形式は次のとおりです:

基本格式:分       时    日期    月份    星期    命令
取值范围:[0-59]  [0-23]  [1-31]   [1-12]   [0-7]

さらに、いくつかの特殊文字の意味も覚えておく必要があります:

  • #* は任意の時間を使用できることを意味します

  • は区切られた期間を意味します

  • - は、連続期間

  • /n は n 単位間隔ごとを意味します

上記の特殊文字の使用法をいくつか見てみましょう。例:

# 每隔5分钟,执行下检测内存的脚本
*/n * * * * /root/script/check_memory.sh
# 每个月1号凌晨5点20分,重启下服务器
20 5 1 * * /usr/sbin/reboot

システム設定ファイル/etc/crontab、/etc/cron.d/*

定期的にスケジュールされたタスクについては、主要な 3 つのファイル: ローカル設定ファイルは

  • /var/spool/cron/ で、ユーザー用に設定されます

  • /etc/crontab、システムのスケジュールされたタスク

  • /etc/cron.d/ Web サイトなどの特定のソフトウェアまたはシステムのスケジュールされたタスクの場合、複数のスケジュールされたタスクが存在する可能性があるため、次のことをお勧めします。 etc/cron.d/ ディレクトリに新しい設定ファイルを作成します

crontab -e はユーザー レベル向けに設計されており、システム レベルの定期タスクの場合は次のようになります。 /etc/crontal ファイルまたは /etc/cron.d/ ディレクトリに書き込むことをお勧めします。

以下の /etc/crontab ファイルの内容を見てください

# cat /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
# * * * * * root /usr/bin/date  >> /root/cron.txt

これは crontab -e とは少し異なることがわかりますが、ここではユーザー名を指定する必要があります。

次に、/etc/cron.d/ ディレクトリにどのようなファイルがあるかを見てみましょう。

# ll /etc/cron.d
total 8
-rw-r--r--. 1 root root 128 Aug  3  2017 0hourly
-rw-------  1 root root 235 Aug  3  2017 sysstat

サーバー上に Web サイトがある場合、この Web サイトについては、定期的にデータベースをバックアップし、Web サイト ファイルも定期的にデータを処理する必要がある場合は、/etc/cron.d/ ディレクトリに関連ファイルを作成できます。 0hourly ファイルの内容を見てみましょう:

# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

このスクリプトは、/etc/cron.hourly ディレクトリ内のスクリプト ファイルを 1 時間ごとに実行することを意味します。

洞察力の鋭い友人は、cron.hourly ディレクトリに加えて、cron.daily、cron.monthly、cron.weekly ディレクトリもあることに気づいたと思います。ただし、これら 3 つのディレクトリにはいくつかの違いがあり、これら 3 つのディレクトリは anacron によって実行されます。このアナクロンは、未実行のスケジュールされたタスクをウェイクアップして実行することを意味します。たとえば、crontab -e を使用してスケジュールされたタスクを設定し、シャットダウンなどの理由で時間が経過してもタスクが実行されない場合、タスクを見逃すことしかできませんが、スクリプトを /etc に配置すると、 /cron .daily/ ディレクトリ内では、実行されない限り、時間が経過しても実行されます。

以上がLinux でのスケジュールされたタスク - 定期的に実行されるスケジュールされたタスクの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。