はじめに
この実験では、Linux で定期的なタスクを設定する方法を学びます。短い間隔でコマンドを繰り返し実行するための強力なツールである watch
コマンドと、特定の時刻にタスクを実行するためのスケジューリング ユーティリティである crontab
を調べます。これらのスキルは、システム管理者や Linux システムで定期的なタスクを自動化する必要があるすべての人にとって欠かせないものです。
この実験では、Linux で定期的なタスクを設定する方法を学びます。短い間隔でコマンドを繰り返し実行するための強力なツールである watch
コマンドと、特定の時刻にタスクを実行するためのスケジューリング ユーティリティである crontab
を調べます。これらのスキルは、システム管理者や Linux システムで定期的なタスクを自動化する必要があるすべての人にとって欠かせないものです。
watch
コマンドの使用watch
コマンドを使用すると、コマンドを繰り返し実行して、その出力をリアルタイムで表示できます。これは、変更を監視したり、定期的な短い間隔でコマンドを実行する際に便利です。
ターミナルを開きます。/home/labex/project
ディレクトリにいる必要があります。もし確認ができない場合は、常に pwd
コマンドを使って現在のディレクトリを確認できます。
5 秒ごとに現在の日付と時刻を表示するために watch
を使います。次のコマンドを入力します。
watch -n 5 date
このコマンドの機能は以下の通りです。
watch
は、別のコマンドを繰り返し実行するために使用するコマンドです。-n 5
は、各実行の間に 5 秒待つように watch
に指示するオプションです。これを省略すると、watch
は 2 秒のデフォルト間隔を使用します。date
は、watch
が繰り返し実行するコマンドです。現在の日付と時刻を表示します。コマンドを入力した後、5 秒ごとに更新されるフルスクリーン表示が表示されるはずです。これは次のようになります。
一番上の行には、実行されているコマンドと更新間隔が表示されます。画面の残りの部分には、date
コマンドの出力が表示されます。
watch
コマンドを終了するには、Ctrl+C
を押します。このキーコンビネーションは、Linux で実行中のコマンドを終了するために一般的に使用されます。
watch
コマンドを停止しないと、無限に実行され続けるため、ターミナルで新しいコマンドを入力できなくなる場合があります。
Crontab を使ってタスクをスケジュールする前に、システムにインストールされていることを確認する必要があります。ほとんどの Linux ディストリビューションには Crontab が事前にインストールされていますが、必要に応じて確認してインストールするのが良い習慣です。
まず、Crontab が既にインストールされているかどうかを確認しましょう。Crontab コマンドを実行して確認できます。
crontab -l
Crontab がインストールされている場合、現在のクロン ジョブの一覧が表示されるか、「labex のクロン タブはありません」というメッセージが表示されます。
コマンドが見つからないというエラー メッセージが表示された場合、Crontab をインストールする必要があります。Ubuntu や Debian ベースのシステムでは、次のコマンドを使ってインストールできます。
sudo apt update
sudo apt install cron
パスワードの入力を求められます。入力して(セキュリティ上、入力中に文字が表示されないことに注意)Enter キーを押します。
インストール後、cron サービスを起動します。
sudo service cron start
このコマンドは、cron サービスを直ちに起動します。
今度は、cron がインストールされて実行されていることを確認しましょう。
sudo service cron status
cron サービスが実行されていることを示す出力が表示されるはずです。
Crontab をインストールしたので、その使い方を調べてみましょう。Crontab は、ログインしていなくても特定の時刻にタスクをスケジュールするために使用されます。
まず、現在の Crontab エントリ(もしあれば)を表示しましょう。次のコマンドを使用します。
crontab -l
-l
オプションは「リスト」を意味します。このコマンドは、Crontab 内のすべてのスケジュールされたタスクを表示します。
まだクロン ジョブを設定していない場合、「labex のクロン タブはありません」というメッセージが表示されます。新しいユーザーにとってはこれが正常です。
次に、Crontab を編集するために開きましょう。このコマンドを使用します。
crontab -e
-e
オプションは「編集」を意味します。このコマンドは、テキスト エディタで Crontab ファイルを開きます。
こが初めて Crontab を使用する場合、エディタを選ぶように促されるかもしれません。異なるエディタに対応する番号の一覧が表示されます。初心者にとっては、nano(通常はオプション 1)が良い選択肢です。なぜなら、使いやすいからです。nano の番号を入力して Enter キーを押します。
エディタを選ぶように促されない場合は、心配しないでください。これは、既に既定のエディタが設定されていることを意味します。
エディタが開くと、空のファイル(または既にあった場合は既存のクロン ジョブ)が表示されます。まだ何も追加しないでください。後の手順で行います。今のところ、ただエディタに馴染んでください。
nano を使用している場合、画面の下部にいくつかのヘルプ コマンドが表示されます。^
記号は Ctrl キーを表します。したがって、^X
は「Ctrl+X」を意味し、nano を終了するために使用されます。
何も変更せずにエディタを終了します。nano では、Ctrl+X を押すことで行えます。変更を保存するかどうか尋ねられた場合は、「いいえ」を表す 'N' を押します。
クロン ジョブを追加する前に、構文を理解することが重要です。Crontab は、タスクが実行される時期を決定するために特定の形式を使用します。
クロン ジョブの基本形式は次のとおりです。
* * * * * command_to_execute
各アスタリスクは、左から右に特定の時間単位を表します。
理解を助けるためのいくつかの例を示します。
30 2 * * *
は「毎日午前 2 時 30 分に」を意味します。0 9 * * 1-5
は「月曜日から金曜日の午前 9 時に」を意味します。*/15 * * * *
は「15 分おきに」を意味します。次の特殊文字を使用できます。
*
: 任意の値,
: 値のリスト区切り文字-
: 値の範囲/
: ステップ値もう少し複雑な例を解説します。
15,45 9-17 * * 1-5 /path/to/script.sh
これは「月曜日から金曜日の午前 9 時から午後 5 時までの各時間の 15 分と 45 分に /path/to/script.sh を実行する」ことを意味します。
この構文を理解することは、効果的なクロン ジョブを作成する鍵です。この形式を使用して異なるタスクをどのようにスケジュールするかを考えるのに少し時間をかけてください。
構文を理解したので、毎分現在の日付をファイルに書き込む簡単なクロン ジョブを追加してみましょう。
編集用に Crontab を開きます。
crontab -e
エディタが開いたら、Crontab に次の行を追加します。
* * * * * date >> /home/labex/project/date_log.txt
これを解説します。
* * * * *
は「月の各日、週の各日の各時間の各分」を意味します。date
は実行するコマンドです。>>
は出力をファイルに追記するために使用されます(上書きではなく)。/home/labex/project/date_log.txt
は出力を保存するファイルです。エディタを保存して終了します。nano を使用している場合:
Ctrl+X
を押して終了します。Y
を押します。Enter
を押します。終了した後、「crontab: installing new crontab」というメッセージが表示されるはずです。これは、変更が保存されたことを確認しています。
クロン ジョブを設定したので、正常に動作しているかどうかを確認しましょう。
まず、クロン ジョブを追加した後、少なくとも 1 分待つ必要があります。これは、クロン ジョブが毎分実行されるため、最初の実行までに最大 1 分かかる場合があるからです。
待った後、cat
コマンドを使用してログ ファイルの内容を表示します。
cat /home/labex/project/date_log.txt
cat
コマンドは、ファイルの内容をターミナルに直接表示します。
日付と時刻が記載された少なくとも 1 行が表示されるはずです。このような内容になります。
Sat Aug 5 10:15:01 UTC 2023
何も表示されない場合は、もう 1 分待って再度試してください。クロン ジョブが開始するまでに少し時間がかかる場合があります。
クロン ジョブの動作を確認するには、先ほど学んだ watch
コマンドを使用してファイルをリアルタイムで監視できます。
watch -n 60 cat /home/labex/project/date_log.txt
これは 60 秒ごとに更新され、新しいエントリが追加されると表示されます。
これを数分間実行します。毎分新しい行が追加されるはずです。
観察が終わったら、Ctrl+C
を押して watch
コマンドを終了します。
おめでとうございます!「予定されたタスクの設定」の実験を成功裏に完了しました。以下のことを学びました。
watch
コマンドを使用して、短い間隔でコマンドを繰り返し実行する方法。crontab -l
と crontab -e
を使用して、crontab を表示および編集する方法。これらのスキルは、Linux 環境でのタスクの自動化とシステムの監視にとって基本的なものです。Linux の学習を続けるにつれて、システム管理と自動化における予定されたタスクのさらに多くの用途を見つけるでしょう。
日付をログに記録するという単純な例を使用しましたが、クロン ジョブはデータのバックアップ、ソフトウェアの更新、またはシステム保守スクリプトの実行など、より複雑なタスクにも使用できます。クロン ジョブを設定する際は、特にシステムにとって重要な操作を行う場合には、常に注意を払ってください。