ホームページ  >  記事  >  システムチュートリアル  >  cronatab 定期タスク スケジューラ

cronatab 定期タスク スケジューラ

WBOY
WBOYオリジナル
2024-06-13 18:49:11328ブラウズ

cronatab 定期タスク スケジューラ

定期的なタスクを実行し、サービスが実行されていることを確認するため。サービス名は crond です。 systemctl start crond;

プロフィール

/etc/crontab

cron ログ ファイル

cat /var/log/cron

はじめに

crond は、Linux で特定のタスクを定期的に実行したり、特定のイベントの処理を待機したりするために使用されるデーモン プロセスです。これは、オペレーティング システムがインストールされると、このサービス ツールがデフォルトでインストールされ、自動的に起動されます。 crond プロセスは、実行すべきタスクがあるかどうかを 1 分ごとに定期的に確認し、実行すべきタスクがある場合は自動的に実行されます。

タスクのスケジューリングの分類

Linux でのタスク スケジューリングは、システム タスク スケジューリングとユーザー タスク スケジューリングの 2 つのカテゴリに分類されます。

システムタスクのスケジューリング: キャッシュされたデータのハードディスクへの書き込み、ログのクリーニングなど、システムが定期的に実行する作業。 /etc ディレクトリには、システム タスク スケジューリングの構成ファイルである crontab ファイルがあります。

システムタスクのスケジュール

設定ファイル/etc/crontabを編集して、必要な実行時間を次の図の形式で指定します。 1行が1つのタスクに対応しており、以下のような形式となります。
cronatab 定期タスク スケジューラ

ユーザータスクのスケジュール

現在のユーザーでコマンド crontab -e を使用して、現在のユーザーとしてタスク スケジュールを作成します。システム タスク スケジュール ファイル形式とは異なり、どのユーザーとして実行するかを指定する必要はありません。
cronatab 定期タスク スケジューラ

時間表示

値を指定: 特定の数値を指定します

範囲値: * はすべてを意味し、この期間中にタスクを 1 回実行します。

離散値: 10 2、3、4 * * *; 10 分ごとに 2、3、4 時に実行されます。 (計3回実行)

連続範囲:10 2-10 * * *; 毎日2:10から10:10まで実行(計8回実行)

ステップ範囲: /3 * * ; 1 分あたり 3 回実行 (つまり、20 秒ごとに 1 回実行)

例:

10 10 /6 * *; 6 日ごとに 10:10 にタスクを実行します。

日付と週

10 10 1-10 * 0,6 #毎月1日~10日の10:10、または土日の10:10に実行

例:

1 1 /6 * root echo "hello word " ; 6 日ごとに 1:01 にタスクを実行します。

1 1-10/3 * * * ルートエコー「hello word」は毎日 1 時から 10 時の範囲内で 3 時間ごとの最初の 1 分間に実行されます

定期的なタスクを作成する
crontab -e

* * * * * /bin/echo "`日付 +%F %H:%M:%S`"

#コマンドは絶対パスを記述する必要があります。変数がマークされていない限り

#ユーザーの下に新しい crontab を作成する場合、% をエスケープする必要があります

作成時のその他の設定
定期タスクを作成する場合、デフォルトのエディターは vi であるため、構文の強調表示はありません。次の方法でデフォルトのエディタを vim に変更できます

#/etc/porfile.d への書き込みはすべてのユーザーに有効になります

#現在のユーザーに ~/bash_profile を書き込みます

EDITOP=vim をエクスポート

タスクを作成する権限

指定したユーザーにタスクの作成を許可します

cat /etc/cron.deny #新しいタスクを作成できないようにファイルにユーザー名を書き込みますが、既に作成されたタスクは引き続き実行されます

指定されたユーザーによるタスクの作成を拒否します

cat /etc/cron.allow #デフォルトのファイルは存在しません

優先順位の許可と拒否

許可ファイルが存在する場合、拒否ファイルは有効になりません。

allow が空の場合は、すべてのユーザーを拒否します

許可も拒否も存在しない場合、ユーザーはスケジュールされたタスクを作成できません

ミリ秒と秒レベルでの定期的なタスクを実現

usleepを使用して微妙なレベルの操作を実現します

usleep 1000000; 1 秒

usleep 1000; 1 ミリ秒

usleep 1; 1 マイクロ秒

ループボディとスリープを使用して、第 2 レベルを達成します。毎分実行されるタスク中に 20 秒間スリープします。


cronatab 定期タスク スケジューラ

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

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