はじめに
この実験では、Linux システム上でスケジュールされた cron ジョブを確認する方法を学びます。まず、crontab -l コマンドを使用してユーザー固有の cron ジョブを表示します。
次に、/etc/crontab ファイルを調べ、/etc/cron.* ディレクトリに定義されたスケジュールを確認することで、システム全体の cron 設定を調査します。この実践的な経験を通じて、Linux システム上でタスクが自動的に実行されるようにスケジュールされている方法を特定し、理解するための必須スキルを身につけることができます。
crontab -l でユーザーの cron ジョブを表示する
このステップでは、crontab コマンドを使用して現在のユーザーのスケジュールされたタスクを表示する方法を学びます。
Cron は、Unix 系オペレーティングシステムにおける時間ベースのジョブスケジューラーです。ユーザーは、指定された時間または日付に自動的に実行されるコマンドまたはスクリプトをスケジュールすることができます。これらのスケジュールされたタスクは、しばしば「cron ジョブ」と呼ばれます。
システム上の各ユーザーは、独自の cron ジョブのセットを持つことができます。これらは「crontab」(cron テーブル)と呼ばれる特別なファイルに保存されます。
現在のユーザー (labex) の cron ジョブを表示するには、crontab コマンドに -l オプションを使用します。-l は「list」(一覧表示)を意味します。
まだターミナルを開いていない場合は、開いてください。デスクトップの左側にある Xfce Terminal アイコンから開くことができます。
ターミナルに以下のコマンドを入力し、Enter キーを押してください。
crontab -l
labex ユーザーにまだ cron ジョブを設定していない場合、crontab エントリがないことを示すメッセージが表示されることがあります。これは新しいユーザー環境では正常な現象です。
no crontab for labex
この出力は、labex ユーザーに現在個人用の cron ジョブがスケジュールされていないことを確認します。
labex ユーザーにスケジュールされたタスクがある場合、それらはここに一覧表示され、スケジュールと実行されるコマンドが表示されます。
既存の cron ジョブを表示する方法を理解することは、Linux システム上でスケジュールされたタスクを管理する最初のステップです。次のステップでは、システム全体の cron 設定を調査します。
Continue をクリックして次のステップに進んでください。
/etc/crontab でシステムの crontab を確認する
前のステップでは、特定のユーザーの cron ジョブを表示する方法を学びました。次に、通常 /etc/crontab ファイルで設定されるシステム全体の cron ジョブを調べてみましょう。
crontab コマンドで管理されるユーザーの crontab とは異なり、/etc/crontab ファイルはシステム全体の設定ファイルであり、システム管理者(または sudo 権限を持つユーザー)が直接編集することができます。このファイルには、システムの動作に不可欠な cron ジョブが含まれていることが多いです。
/etc/crontab ファイルの内容を表示するには、cat や less などのコマンドラインのテキストビューアーを使用できます。/etc/crontab はシステムファイルであるため、読み取るには sudo が必要になる場合がありますが、この LabEx 環境では通常 sudo なしで読み取ることができます。cat を使って内容をターミナルに直接表示してみましょう。
以下のコマンドを入力し、Enter キーを押してください。
cat /etc/crontab
システムの crontab ファイルの内容が表示されます。おそらく次のような内容になっているでしょう。
## /etc/crontab: system-wide crontab
## Unlike any other crontab you might learn about, this file has a fifth field
## which is the user that the command will run as.
#
## min hour day month wday user command
## ---- ---- --- ----- ---- ---- -------
#
## Example of job execution:
## .---------------- minute (0 - 59)
## | .------------- hour (0 - 23)
## | | .---------- day of month (1 - 31)
## | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
## | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
## | | | | | .- user to run job as
## | | | | | | . command to be executed
## | | | | | | |
## * * * * * user command
#
... (other entries)
このファイルの構造に注目してください。フォーマットを説明するコメントが含まれており、各 cron ジョブを表す行には、ユーザーの crontab と比べて追加のフィールド(user フィールド)があります。このフィールドは、コマンドを実行するユーザーを指定します。
システムの crontab は、システムの更新、ログのローテーション、および他のメンテナンス活動など、特権を持って実行する必要があるタスクや特定のシステムユーザーとして実行する必要があるタスクによく使用されます。
/etc/crontab を調べることで、システムレベルでスケジュールされた自動タスクについての洞察を得ることができます。
Continue をクリックして次のステップに進み、システムの cron ジョブの他の保存場所を調べましょう。
/etc/cron.* の cron スケジュールを調査する
メインの /etc/crontab ファイルに加えて、多くの Linux ディストリビューションでは、/etc/cron.d/、/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/ などのディレクトリを使用して、システム全体の cron ジョブを整理しています。
これらのディレクトリは、スケジュールされたタスクをより構造化された方法で管理する手段を提供します。/etc/cron.hourly/ に配置されたスクリプトは毎時実行され、/etc/cron.daily/ に配置されたスクリプトは毎日実行されるなど、それぞれのディレクトリに応じた実行間隔が設定されています。正確な実行タイミングは通常、/etc/crontab 内のスクリプトによって制御され、このスクリプトが定期的にこれらのディレクトリ内のスクリプトを実行します。
これらのディレクトリの内容を調べて、どのようなシステムタスクがスケジュールされているかを確認しましょう。
まず、/etc/cron.d/ ディレクトリの内容を一覧表示します。このディレクトリには、インストールされたパッケージによって配置された、特定の cron ジョブを定義するファイルが含まれていることが多いです。
以下のコマンドを入力し、Enter キーを押してください。
ls /etc/cron.d/
ディレクトリ内のファイルが一覧表示され、次のような出力が表示されるかもしれません。
anacron e2scrub_all phpsessionclean
これらのファイルには、/etc/crontab と同様の形式(ユーザーフィールドを含む)で cron ジョブの定義が含まれています。cat を使用して、これらのファイルの内容を表示することができます。たとえば、anacron ファイルの内容を表示するには、次のコマンドを実行します。
cat /etc/cron.d/anacron
次に、毎時、毎日、毎週、毎月実行されるジョブのディレクトリを見てみましょう。ls を使用してこれらのディレクトリの内容を一覧表示できます。
以下のコマンドを順番に入力し、それぞれのコマンドを入力した後に Enter キーを押してください。
ls /etc/cron.hourly/
ls /etc/cron.daily/
ls /etc/cron.weekly/
ls /etc/cron.monthly/
これらのディレクトリには、様々なスクリプトやファイルが一覧表示されるかもしれません。たとえば、/etc/cron.daily/ には、パッケージリストの更新、一時ファイルのクリーニング、またはログのローテーションなどのタスク用のスクリプトが含まれていることが多いです。
ls /etc/cron.daily/
apt-compat dpkg google-chrome man-db mlocate passwd update-notifier-common
これらのスクリプトは、cron システムによって指定された間隔(毎時、毎日、毎週、毎月)で自動的に実行されます。
/etc/crontab 内のファイルと /etc/cron.* 配下のディレクトリを調べることで、システム上で実行されている自動タスクの包括的な概要を把握することができます。これは、システム管理とトラブルシューティングにおいて重要です。
これで、ユーザーおよびシステム全体の cron ジョブを表示する主要な場所を調べました。
Continue をクリックして、この実験を完了してください。
まとめ
この実験では、Linux でスケジュールされた cron ジョブを確認する方法を学びました。まず、crontab -l コマンドを使用してユーザー固有の cron ジョブを表示し、各ユーザーが自分の crontab ファイルに独自のスケジュールタスクを持つことができることを理解しました。また、出力の解釈方法、現在のユーザーに既存の cron ジョブがないことを示すメッセージの意味も学びました。
その後、システム全体の cron 設定を調べ始め、特に /etc/crontab ファイルに焦点を当てました。このファイルはシステムレベルの cron ジョブに使用され、ユーザーの crontab とは異なり、システム管理者によって直接管理されます。ユーザーとシステム全体の cron ジョブの場所の両方を理解することは、Linux システム上のスケジュールタスクを包括的に確認するために重要です。



