Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> Linuxシステムのcrondコマンドの使用方法

Linuxシステムのcrondコマンドの使用方法

  

Linuxシステムのcrondは、定期的にログを消去するなど、定期的に実行される命令を設定するために使用され、その他の作業はcrondコマンドの使用に非常に適しています。使い方は一緒に学びましょう。

、crondプロファイル

のコンセプト

crondとcrontabの概念は不可分です。 Crontabは、UnixおよびUnixライクなオペレーティングシステムで一般的に見られるコマンドです。このコマンドは、標準入力デバイスから命令を読み込み、後で読み込んで実行できるように' crontab'ファイルに保存します。この単語はギリシャのクロノス(χ?ρ?&ν;")から来ており、元の意味は時間です。そしてcrondはそのデーモンです。

crondは、定期的に特定のタスクを実行したり特定のイベントを待機したりするためにLinuxで使用されるデーモンで、Windowsのスケジュールタスクと同様に、オペレーティングシステムのインストール時にデフォルトでインストールされます。ツールは、自動的にcrondプロセスを開始し、crondプロセスは毎分実行されるべきタスクがあるかどうかを定期的にチェックします。実行されるべきタスクがあれば、タスクは自動的に実行されます。

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

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

/etc /crontabファイルには、次の行が含まれています。

SHELL = /bin /bash

PATH = /sbin:/bin:/usr /sbin:/usr /Bin

MAILTO = root

HOME = /

#run-parts

01 * * * * root run-parts /etc/cron.hourly02 4 * * *ルート実行部分/etc/cron.daily22 4 * * 0ルート実行部分/etc/cron.weekly42 4 1 * *ルート実行部分/etc/cron.monthly最初の4行はcrondの設定に使用されます。実行中のタスクの環境変数、1行目のSHELL変数はシステムが使用するシェルを指定します。ここではbash、2行目のPATH変数はシステム実行コマンドのパス、3行目のMAILTO変数はcrondのタスク実行情報を指定します。 Eメールはrootユーザーに送信されますMAILTO変数の値が空の場合は、タスク実行情報がユーザーに送信されないことを意味します4行目のHOME変数は、コマンドまたはスクリプトの実行時に使用されるホームディレクトリを指定します。 6行目から9行目に示されている意味については、次のセクションで詳しく説明します。私はここでは言いません。

lユーザータスクのスケジュール設定:ユーザーデータのバックアップ、定期的な電子メールの通知など、ユーザーが定期的に実行する必要がある作業。ユーザーはcrontabツールを使用して自分のスケジュールされたタスクをカスタマイズできます。すべてのユーザー定義のcrontabファイルは/var /spool /cronディレクトリに保存されています。ファイル名はユーザー名と同じです。

2番目に、crontabツールの使用

(1)crontabフォーマットの使用

一般的に使用されるcrontabフォーマットは次のとおりです。

crontab [ - uユーザー] [ファイル]

crontab [-uユーザー] [-e | -l | -r |

l -u user:ユーザーのcrontabサービスを設定するために使用されますたとえば、' -u ixdba'は、ixtabユーザーのcrontabが設定されていることを示します。サービス、このパラメータは通常rootユーザーによって実行されます。

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

l -e:ユーザーのcrontabファイルの内容を編集します。ユーザーを指定しないと、現在のユーザーのcrontabファイルを編集することになります。

l -l:ユーザーのcrontabファイルの内容を表示しますユーザーが指定されていない場合は、現在のユーザーのcrontabファイルの内容が表示されます。

l -r:/var /spool /cronディレクトリからユーザーのcrontabファイルを削除するユーザーが指定されていない場合は、現在のユーザーのcrontabファイルがデフォルトで削除されます。

l -i:ユーザーのcrontabファイルを削除するときに確認メッセージを表示します。

(2)crontabファイルの意味

ユーザーが作成したcrontabファイルの各行はタスクを表し、各行の各フィールドは設定を表し、その形式は次のとおりです。

分時日月週コマンドここで、最初の5つのセグメントは時間設定セグメント、6番目のセグメントは実行されるコマンドセグメントです。

l minute :分を示します。0から59までの任意の整数です。

l hour:時間を示します。0から23までの整数です。

l day:日付を示します。1から31までの整数です。

l month:月を示します。1から12までの整数です。

l week:曜日を示します。0から7までの整数で、0または7は日曜日を表します。

l command:実行するコマンドは、システムコマンドまたは自分で書いたスクリプトファイルです。

上記のフィールドでは、以下の特殊文字を使用することもできます。

lアスタリスク(*):月フィールドがアスタリスクの場合はすべての可能な値を表します。このコマンドは毎月他のフィールドの制約の後に実行されます。

lカンマ(、):' 1,2,5,7,8,9'

lのように、値の範囲をカンマ区切りの値で指定できます。 - ):整数の範囲を表すには、整数の間にミドルバーを使用できます。たとえば、< 2-6>は< 2,3,4,5,6>を意味します。

lスラッシュ(/):時間の間隔の頻度はスラッシュで指定できます。たとえば、「0-23 /2」は2時間ごとに実行されることを意味します。同時に、スラッシュをアスタリスクと共に使用することができます。例えば、* /10が分フィールドで使用されている場合、10分ごとに実行されます。

(3)crontabファイルの例

0 * /3 * * * /usr /local /apache2 /apachectl restartは、3時間ごとにapacheサービスを再起動することを意味します。

30 3 * * 6 /webdata/bin/backup.sh

/webdata/bin/backup.shスクリプトが毎週土曜日の3:30に実行されることを示します。

0 0 1,20 * * fsck /dev /sdb8

/dev /sdb8ディスクデバイスが毎月1日と20日にチェックされることを示します。

10 5 * /5 * * echo'' "/usr /local /apache2 /log /access_logは、毎月5、10、15、20、25、30を意味します。数値の5:10は、Apacheログのクリーンアップ操作を実行します。

第三に、crontabツールの使用注意

(1)環境変数の問題に注意してください

ときどきcrontabを作成しますが、このタスクは自動的には実行できませんが、手動で実行できます。このタスクに問題はありません。これは通常、crontabファイルに構成環境変数がないことが原因です。

crontabファイルで複数のスケジューリングタスクを定義する場合、特に注意が必要な問題の1つは、環境変数の設定です。これは、手動でタスクを実行すると、現在のシェル環境で実行されるためです。環境変数が見つかり、システムが自動的にタスクスケジューリングを実行する場合、環境変数はロードされないため、実行するタスクに必要なすべての環境変数をcrontabファイルに指定する必要があり、システムは問題なくタスクスケジューリングを実行します。 。

(2)システムユーザーのメールログをクリーンアップするように注意してください。

各タスクの実行がスケジュールされると、システムは現在のシステムユーザーにタスク出力情報を電子メールで送信し、ログを蓄積します。情報は非常に大きくなる可能性があり、システムの通常の動作に影響を与える可能性があるため、各タスクをリダイレクトすることが重要です。

たとえば、ログ出力を無視して、crontabファイルに次の形式を設定できます。

0 * /3 * * /usr /local /apache2 /apachectl restart》 /dev /null 2 & 1' /dev /null 2》& 1'は、標準出力が/dev /nullにリダイレクトされているため、標準出力を/dev /nullにリダイレクトしてから標準エラーを標準出力にリダイレクトすることを意味します。標準エラーも/dev /nullにリダイレクトされるため、ログ出力の問題は解決されています。

(3)システムレベルのタスクスケジューリングとユーザーレベルのタスクスケジューリング

システムレベルのタスクスケジューリングは主にシステムのメンテナンス作業の一部を完了し、ユーザーレベルのタスクスケジューリングは主にユーザー定義タスクを完了します。ユーザーレベルのタスクスケジュールをシステムレベルのタスクスケジュールに組み入れることをお勧めします(推奨しません)。ただし、逆の操作はできません。スケジュールタスクは直接/etc /crontabファイルに書き込まれますシステムを定期的に再起動するタスクを定義する場合は、rootユーザーの下にスケジュール再起動システムを作成した場合でも、タスクを/etc /crontabファイルに入れる必要があります。また無効です。

上記はLinuxでcrondコマンドを使用する方法の紹介ですが、このコマンドを使用してプログラムを定期的に実行するのは非常に便利であり、このコマンドも習得が非常に簡単です。

Copyright © Windowsの知識 All Rights Reserved