予定されたタスクの設定

LinuxLinuxBeginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux で定期的なタスクを設定する方法を学びます。短い間隔でコマンドを繰り返し実行するための強力なツールである watch コマンドと、特定の時刻にタスクを実行するためのスケジューリング ユーティリティである crontab を調べます。これらのスキルは、システム管理者や Linux システムで定期的なタスクを自動化する必要があるすべての人にとって欠かせないものです。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 93%です。学習者から 100% の好評価を得ています。

watch コマンドの使用

watch コマンドを使用すると、コマンドを繰り返し実行して、その出力をリアルタイムで表示できます。これは、変更を監視したり、定期的な短い間隔でコマンドを実行する際に便利です。

  1. ターミナルを開きます。/home/labex/project ディレクトリにいる必要があります。もし確認ができない場合は、常に pwd コマンドを使って現在のディレクトリを確認できます。

  2. 5 秒ごとに現在の日付と時刻を表示するために watch を使います。次のコマンドを入力します。

    watch -n 5 date

    このコマンドの機能は以下の通りです。

    • watch は、別のコマンドを繰り返し実行するために使用するコマンドです。
    • -n 5 は、各実行の間に 5 秒待つように watch に指示するオプションです。これを省略すると、watch は 2 秒のデフォルト間隔を使用します。
    • date は、watch が繰り返し実行するコマンドです。現在の日付と時刻を表示します。
  3. コマンドを入力した後、5 秒ごとに更新されるフルスクリーン表示が表示されるはずです。これは次のようになります。

watch command output example

一番上の行には、実行されているコマンドと更新間隔が表示されます。画面の残りの部分には、date コマンドの出力が表示されます。

  1. watch コマンドを終了するには、Ctrl+C を押します。このキーコンビネーションは、Linux で実行中のコマンドを終了するために一般的に使用されます。

    watch コマンドを停止しないと、無限に実行され続けるため、ターミナルで新しいコマンドを入力できなくなる場合があります。

Crontab のインストール

Crontab を使ってタスクをスケジュールする前に、システムにインストールされていることを確認する必要があります。ほとんどの Linux ディストリビューションには Crontab が事前にインストールされていますが、必要に応じて確認してインストールするのが良い習慣です。

  1. まず、Crontab が既にインストールされているかどうかを確認しましょう。Crontab コマンドを実行して確認できます。

    crontab -l

    Crontab がインストールされている場合、現在のクロン ジョブの一覧が表示されるか、「labex のクロン タブはありません」というメッセージが表示されます。

  2. コマンドが見つからないというエラー メッセージが表示された場合、Crontab をインストールする必要があります。Ubuntu や Debian ベースのシステムでは、次のコマンドを使ってインストールできます。

    sudo apt update
    sudo apt install cron

    パスワードの入力を求められます。入力して(セキュリティ上、入力中に文字が表示されないことに注意)Enter キーを押します。

  3. インストール後、cron サービスを起動します。

    sudo service cron start

    このコマンドは、cron サービスを直ちに起動します。

  4. 今度は、cron がインストールされて実行されていることを確認しましょう。

    sudo service cron status

    cron サービスが実行されていることを示す出力が表示されるはずです。

Crontab の概要

Crontab をインストールしたので、その使い方を調べてみましょう。Crontab は、ログインしていなくても特定の時刻にタスクをスケジュールするために使用されます。

  1. まず、現在の Crontab エントリ(もしあれば)を表示しましょう。次のコマンドを使用します。

    crontab -l

    -l オプションは「リスト」を意味します。このコマンドは、Crontab 内のすべてのスケジュールされたタスクを表示します。

    まだクロン ジョブを設定していない場合、「labex のクロン タブはありません」というメッセージが表示されます。新しいユーザーにとってはこれが正常です。

  2. 次に、Crontab を編集するために開きましょう。このコマンドを使用します。

    crontab -e

    -e オプションは「編集」を意味します。このコマンドは、テキスト エディタで Crontab ファイルを開きます。

    こが初めて Crontab を使用する場合、エディタを選ぶように促されるかもしれません。異なるエディタに対応する番号の一覧が表示されます。初心者にとっては、nano(通常はオプション 1)が良い選択肢です。なぜなら、使いやすいからです。nano の番号を入力して Enter キーを押します。

Selecting an editor

エディタを選ぶように促されない場合は、心配しないでください。これは、既に既定のエディタが設定されていることを意味します。

  1. エディタが開くと、空のファイル(または既にあった場合は既存のクロン ジョブ)が表示されます。まだ何も追加しないでください。後の手順で行います。今のところ、ただエディタに馴染んでください。

    nano を使用している場合、画面の下部にいくつかのヘルプ コマンドが表示されます。^ 記号は Ctrl キーを表します。したがって、^X は「Ctrl+X」を意味し、nano を終了するために使用されます。

  2. 何も変更せずにエディタを終了します。nano では、Ctrl+X を押すことで行えます。変更を保存するかどうか尋ねられた場合は、「いいえ」を表す 'N' を押します。

Crontab の構文の理解

クロン ジョブを追加する前に、構文を理解することが重要です。Crontab は、タスクが実行される時期を決定するために特定の形式を使用します。

  1. クロン ジョブの基本形式は次のとおりです。

    * * * * * command_to_execute

    各アスタリスクは、左から右に特定の時間単位を表します。

    1. 分 (0 - 59)
    2. 時 (0 - 23)
    3. 月の日 (1 - 31)
    4. 月 (1 - 12)
    5. 曜日 (0 - 7、0 と 7 の両方が日曜日を表す)
  2. 理解を助けるためのいくつかの例を示します。

    • 30 2 * * * は「毎日午前 2 時 30 分に」を意味します。
    • 0 9 * * 1-5 は「月曜日から金曜日の午前 9 時に」を意味します。
    • */15 * * * * は「15 分おきに」を意味します。
  3. 次の特殊文字を使用できます。

    • *: 任意の値
    • ,: 値のリスト区切り文字
    • -: 値の範囲
    • /: ステップ値
  4. もう少し複雑な例を解説します。
    15,45 9-17 * * 1-5 /path/to/script.sh
    これは「月曜日から金曜日の午前 9 時から午後 5 時までの各時間の 15 分と 45 分に /path/to/script.sh を実行する」ことを意味します。

この構文を理解することは、効果的なクロン ジョブを作成する鍵です。この形式を使用して異なるタスクをどのようにスケジュールするかを考えるのに少し時間をかけてください。

クロン ジョブの追加

構文を理解したので、毎分現在の日付をファイルに書き込む簡単なクロン ジョブを追加してみましょう。

  1. 編集用に Crontab を開きます。

    crontab -e
  2. エディタが開いたら、Crontab に次の行を追加します。

    * * * * * date >> /home/labex/project/date_log.txt
Cron job editor screenshot

これを解説します。

  • 5 つのアスタリスク * * * * * は「月の各日、週の各日の各時間の各分」を意味します。
  • date は実行するコマンドです。
  • >> は出力をファイルに追記するために使用されます(上書きではなく)。
  • /home/labex/project/date_log.txt は出力を保存するファイルです。
  1. エディタを保存して終了します。nano を使用している場合:

    • Ctrl+X を押して終了します。
    • 変更を保存したいことを確認するために Y を押します。
    • ファイル名を確認するために Enter を押します。
  2. 終了した後、「crontab: installing new crontab」というメッセージが表示されるはずです。これは、変更が保存されたことを確認しています。

クロン ジョブの監視

クロン ジョブを設定したので、正常に動作しているかどうかを確認しましょう。

  1. まず、クロン ジョブを追加した後、少なくとも 1 分待つ必要があります。これは、クロン ジョブが毎分実行されるため、最初の実行までに最大 1 分かかる場合があるからです。

  2. 待った後、cat コマンドを使用してログ ファイルの内容を表示します。

    cat /home/labex/project/date_log.txt

    cat コマンドは、ファイルの内容をターミナルに直接表示します。

  3. 日付と時刻が記載された少なくとも 1 行が表示されるはずです。このような内容になります。

    Sat Aug  5 10:15:01 UTC 2023

    何も表示されない場合は、もう 1 分待って再度試してください。クロン ジョブが開始するまでに少し時間がかかる場合があります。

  4. クロン ジョブの動作を確認するには、先ほど学んだ watch コマンドを使用してファイルをリアルタイムで監視できます。

    watch -n 60 cat /home/labex/project/date_log.txt

    これは 60 秒ごとに更新され、新しいエントリが追加されると表示されます。

  5. これを数分間実行します。毎分新しい行が追加されるはずです。

  6. 観察が終わったら、Ctrl+C を押して watch コマンドを終了します。

まとめ

おめでとうございます!「予定されたタスクの設定」の実験を成功裏に完了しました。以下のことを学びました。

  1. watch コマンドを使用して、短い間隔でコマンドを繰り返し実行する方法。
  2. システムに crontab をインストールして設定する方法。
  3. crontab -lcrontab -e を使用して、crontab を表示および編集する方法。
  4. タスクのスケジューリング用の crontab 構文を理解する方法。
  5. 毎分実行される簡単なクロン ジョブを作成する方法。
  6. クロン ジョブの出力を監視する方法。

これらのスキルは、Linux 環境でのタスクの自動化とシステムの監視にとって基本的なものです。Linux の学習を続けるにつれて、システム管理と自動化における予定されたタスクのさらに多くの用途を見つけるでしょう。

日付をログに記録するという単純な例を使用しましたが、クロン ジョブはデータのバックアップ、ソフトウェアの更新、またはシステム保守スクリプトの実行など、より複雑なタスクにも使用できます。クロン ジョブを設定する際は、特にシステムにとって重要な操作を行う場合には、常に注意を払ってください。