LinuCレベル1 102試験の例題と解説

1.08.2ジョブスケジューリング

LinuCレベル1 102試験の出題範囲から「1.08.2 ジョブスケジューリング」についての例題を解いてみます。
ここでは、crontabの設定ファイルについて確認しておきましょう。

Linucレベル1 102試験 出題範囲


例題

crontab -eコマンドを使用して設定したファイルが配置されるディレクトリとして、適切なものを1つ選択してください。

  1. /etc/crontab
  2. /var/spool/cronjobs
  3. /var/spool/cron
  4. /usr/lib/cron

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「3. /var/spool/cron」です。

crontab -eコマンドは、ユーザごとの定期実行に関する設定を行うことができます。

ここでは、以下の条件の定期実行を設定する例を元に解説します。

・定期実行の条件

  • 実行ユーザ :user1
  • 実行タイミング:1分毎に実行
  • 実行コマンド :testという文字列を/home/user1/test.txtに書き込む

以下のコマンドを実行して、定期実行の設定を行います。

[user1@test ~]$ crontab -e

設定画面で以下を設定します。

* * * * * echo test >> $HOME/test.txt

保存して閉じると、定期実行の設定が反映されます。

設定は/var/spool/cron/ディレクトリに、crontab -eコマンドを実行したユーザ名と同じファイル名で保存されます。
※/var/spool/cronディレクトリへのアクセスは、root権限が必要です。

# ls -l /var/spool/cron/
合計 4
-rw------- 1 user1 user1 40  x月 xx xx:xx user1

# cat /var/spool/cron/user1
* * * * * echo test >> $HOME/test.txt

以上が、crontab -e コマンドを使用した設定方法となります。

ユーザごとの定期実行の設定は、以下のようにファイルを指定する方法でも行うことができます。
crontab [ファイル名]

ここでは、前述した定期実行の設定例を元に解説します。

以下のコマンドを実行して、定期実行の設定を記載したファイルを作成します。

[user1@test ~]$ vi sample.txt

ファイルの編集画面で以下を入力します。

* * * * * echo test >> $HOME/test.txt

保存して閉じます。

crontab sample.txtを実行すると、/var/spool/cron/user1がsample.txtに記載した内容で作成されます。
/var/spool/cron/user1が既に存在する場合は、上書きされます。

[user1@test ~]$ crontab sample.txt

# ls -l /var/spool/cron/
合計 8
-rw------- 1 user1 user1 49  xx月 xx xx:xx user1

# cat /var/spool/cron/user1
* * * * * echo test >> $HOME/test.txt

定期実行の設定は、/etc/crontabファイルまたは/etc/cron.dディレクトリでも行うことができます。前述したuser1ユーザの定期実行の設定を/etc/crontabまたは/etc/cron.d/に設定する場合は、以下の設定をファイルに追加します。

* * * * * user1 echo test >> $HOME/test.txt

/etc/crontab、/etc/cron.d/で定期実行の設定を記載する場合、コマンドを実行するユーザ名の指定が必要です。
なお、/etc/crontabに直接定期実行の設定を記載することは推奨されておらず、/etc/cron.d/ディレクトリ配下に、定期実行の設定を記載したファイルを配置することが推奨されています。

それでは、例題の選択肢について解説します。

1./etc/crontab
不正解です。

/etc/crontabはシステム全体の定期実行の設定を行うためのファイルのため、不正解です。

2./var/spool/cronjobs
不正解です。

/var/spool/cronjobsというディレクトリは存在しません。

3.var/spool/cron
正解です。

前述の通り、crontab -eコマンドで設定したファイルは/var/spool/cronディレクトリ配下に配置されます。直接/var/spool/cronディレクトリ配下のファイルを設定することもできますが、crontab -eコマンドを用いて設定することが推奨されています。

4./usr/lib/cron
不正解です。

/usr/lib/cronというディレクトリは存在しません。

定期的にジョブを実行するcronには、ユーザ用のcrontabファイルと、システム用のcrontabファイルが存在します。
それぞれのファイルの違いや編集方法を理解し、正しく設定できるようにしましょう。


例題作成者

株式会社デージーネット OSS研究室 宮地 智哉

ページトップへ