Linux crontabコマンド:スケジュールされたタスクの周期実行(詳細説明)

crontab コマンドの基本的な形式は次のとおりです。

[root@localhost ~]# crontab [オプション] [ファイル]

file はコマンド ファイルの名前を指します。つまり、ファイルが crontab のタスク リスト ファイルとして使用され、crontab にロードされます。ファイル名がコマンド ラインで指定されていない場合、このコマンドは標準のコマンド ラインで入力されたコマンドを受け入れます。 (キーボード) と入力します。crontab と入力します。

表 1 に、このコマンドで一般的に使用されるオプションと機能を示します。

表 1 crontab コマンドの共通オプションと機能
オプション 関数
-u ユーザー 特定のユーザーの crontab サービスを設定するために使用されます。たとえば、「-u デモ」は
デバイス デモ ユーザーの crontab サービスを示します。このオプションは通常、root ユーザーによって実行されます。
-e ユーザーの crontab ファイルの内容を編集します。ユーザーが指定されていない場合は、現在のユーザーの crontab ファイルを編集することを意味します。
-l ユーザーの crontab ファイルの内容を表示します。ユーザーが指定されていない場合は、現在のユーザーの crontab ファイルの内容が表示されます。
-r  /var/spool/cron からユーザーの crontab ファイルを削除します。ユーザーが指定されていない場合は、デフォルトで現在のユーザーの crontab ファイルが削除されます。 
-私 ユーザーの crontab ファイルを削除するときに確認プロンプトを表示します。

Crontab のスケジュールされたタスクは非常に簡単で、「crontab -e」コマンドを実行し、定期的に実行したいタスクを入力するだけです。ただし、「crontab -e」コマンドを実行すると空のファイルが開かれるので、操作方法はVimと同じです。ファイル形式は次のとおりです。

[root@localhost! ]# crontab -e
#crontab 編集インターフェイスに入ります。Vim が開き、タスクを編集します
* * * * * 実行するタスク 

このファイルでは、コマンドやタスクの実行時間を判断するために5つの「*」が使用されていますが、この5つの「*」の具体的な意味は表2に示されています。

表 2 crontab の時間表現
プロジェクト 意味 範囲
初め"*" 時の分(分) 0~59
二番目"*" 時刻 (時間) 0~23
第3"*" 月の日(日) 1~31
第4"*" 年の月 (月) 1~12
五番目"*" 曜日(週) 0~7 (0と7は両方とも日曜日を表します)

時間の表現には、表 3 に示すように、いくつかの特殊な記号があります。

表 3 特別な時間のシンボル
特殊記号 意味
*(アスタリスク) いつでもを表します。たとえば、最初の「*」は、1 時間にわたって 1 分ごとに実行されることを意味します。
、(コンマ) 不連続な時間を表します。たとえば、「0 8, 12, 16*** コマンド」は、コマンドが毎日 8:00、12:00、16:00 に実行されることを意味します。
-(中央のバー) 連続した時間範囲を表します。たとえば、「0 5 ** 1-6 コマンド」は、月曜日から土曜日までの午前 5 時にコマンドを実行することを意味します。
/ (スラッシュ) 実行される頻度を表します。たとえば、「*/10**** コマンド」は、10 分ごとにコマンドを実行することを意味します。

「crontab -e」の編集が完了し、保存して終了すると、スケジュールされたタスクは実際に /var/spool/cron/ ディレクトリに書き込まれます。各ユーザーのスケジュールされたタスクは、独自のユーザー名によって区別されます。また、crontab コマンドは、保存されている限り、または crond サービスが開始されている限り有効になります。

 Crontab の例:

時間の意味 45 22 *** コマンドは 22:45 にコマンド 0 を実行します。 17 ** 1 コマンドは毎週月曜日の 17:00 にコマンド 0 5 1 を実行します。 15** コマンドは毎月 1 日と 15 日の午前 5 時に実行します。 コマンドを実行40 at 0:00 4 ** 1-5 コマンドは毎週月曜日から金曜日の午前 4:40 にコマンドを実行します */10 4 *** コマンドはコマンド 0 を毎日午前 4:00 に 10 分ごとに実行します 0 1, 15 * 1 つのコマンドが毎月 1 日と 15 日、および毎週 0:00 に実行されます。注: 曜日と曜日は両方の日を定義するため、同時に指定しないことをお勧めします。とても簡単です。管理者を混乱させます


[例 1] システムで 5 分ごとに /tmp/test ファイルに行「11」を書き込み、システムのスケジュールされたタスクが実行されるかどうかを確認します。

[root@localhost ~]# crontab -e
#編集インターフェイスに入る
*/5 * * * * /bin/echo "11" >> /tmp/test

 このタスクは時間作業では意味がありませんが、スケジュールされたタスクが正常に実行できるかどうかを簡単に確認できます。5 分ごとが長すぎると思われる場合は、「*」に変更して 1 分ごとに実行します。また、at コマンドと同様に、システム コマンドを定期的に実行する場合は、絶対パスを使用するのが最善です。

【例2】毎週火曜日午前5時5分にシステムを再起動します。

[root@localhost ~]# crontab -e
5.5 * * 2 /sbin/shutdown -r now

サーバーに高い負荷がかかっている場合は、週に 1 回サーバーを再起動して、システム ステータスを 0 にリセットすることをお勧めします。たとえば、ほとんどのゲームサーバーは週に 1 回メンテナンスされますが、メンテナンス中の最も重要な作業は、システムを再起動してステータスを 0 に戻すことです。現時点では、サーバーに定期的に自動的に実行させることができます。

【例3】ログバックアップスクリプトautobak.shは、毎月1日、10日、15日の午前3時30分に定期的に実行されます。

[root@localhost ~]# crontab -e
30.3 1,10,15 * * /root/sh/autobak.sh

 これらのスケジュールされたタスクを保存すると、指定した時間に実行できるようになります。コマンドを使用して、スケジュールされたタスクを表示および削除できます。コマンドは次のとおりです。

[root@localhost ~]# crontab -l
#root ユーザーの crontab タスクを表示
*/5 * * * * /bin/echo "11" >> /tmp/test
5.5 * * 2 /sbin/shutdown -r now
30.3 1 , 10, 15 * * /root/sh/autobak.sh
[root@localhost ~]# crontab -r
#root ユーザーのスケジュールされたタスクをすべて削除します。特定のスケジュールされたタスクのみを削除したい場合は、「crontab -e」コマンドを実行して #edit モードに入り、 [root@localhost ~]
を手動で削除できます
。# crontab -l
no crontab for root #
削除後、クエリを実行します。 root ユーザーを持たないタイミング ミッション完了

crontab のスケジュールされたタスクを作成するときは、次の点に注意する必要があります。

  • 6 つのオプションをすべて空にすることはできず、必ず入力する必要があります。不明な場合は、「*」を使用して時間を表します。
  • crontab スケジュールされたタスクの最小有効時間は分、最大有効時間は月です。2018年中のどこかの処刑や3時30分30秒などの時刻は認識できません。
  • 時間を定義する場合は、スケジュールされたタスクに日付と週を含めないことをお勧めします。日付と週はどちらも日単位で測定され、管理者が混乱しやすいためです。
  • スケジュールされたタスクでは、コマンドを直接記述するかスクリプトに記述するかに関係なく、絶対パスを使用することが最善です。相対パスを使用するコマンドがエラーを報告する場合があります。

おすすめ

転載: blog.csdn.net/qq_43079001/article/details/132083577
おすすめ