crontabでのサーバ時刻合わせ設定(NTP)
時刻合わせにはroot権限が必要なはずなので、rootで設定しましょう。
# 時刻合わせ
0 * * * * /usr/sbin/ntpdate -bs ntp1.noah.idc.jp > /dev/null 2>&1
crontabの設定方法
###/etc/crontab
の初期状態
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- 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-name command to be executed
###設定ファイル内容(/etc/crontab
)
環境変数設定
変数の設定について説明します。
cronにはユーザの環境変数が引き継がれないため、ここで設定する必要があります。
SHELL
cronで使用されるシェルを設定します。
PATH
cronに教えるパスの設定します。
ここで設定されていないパス上にあるコマンド等を実行させる場合は、フルパスでコマンド等を設定する必要があります。
MAILTO
cronの実行結果を送るユーザまたはメールアドレスを指定します。
メールを送信したくない場合は「MAILTO=""」と設定します。
HOME
cronが実行されるカレントディレクトリとなります。
その他の環境変数
その他にも環境変数を設定したい場合は任意で設定することが可能です。
(変数名も任意で設定できます)
###コマンドスケジュール設定
# 分 時 日 月 曜日 実行ユーザ 実行コマンド
# 毎時15分に、「logger」コマンドで「/var/log/messages」にをログを書き出す設定
15 * * * * root logger crontab-test
設定可能な数値
設定項目 | 数値 |
---|---|
分 | 0-59 |
時 | 0-23 |
日 | 1-31 |
月 | 1-12 |
曜日 | 0-7 (0または7は日曜日) |
※曜日補足
0=日、1=月、2=火、3=水、4=木、5=金、6=土、7=日
実行時間指定方法
指定方法 | 設定例 | 説明 |
---|---|---|
リスト | 0,10,20,30 | 分フィールド指定した場合は0,10,20,30分に実行します。 |
範囲 | 1-5 | 月フィールドで指定した場合、1,2,3,4,5月に処理を実行します。 |
共存 | 1,6,9-11 | 時間フィールドで指定した場合、1時、6時、9時、10時、11時に処理を実行します。 |
間隔 | */10 | 分フィールドで指定した場合、10分間隔で処理を実行します。「/」の後ろに指定した値の間隔で処理を実行します。 |
/etc/cron.d
ディレクトリ内のファイル書き方
「/etc/crontab」と同じ書式でかけば良いです。
注意をする点としては
1. パーミッションは644
2. 所有者はrootで
ファイル名はなんでも良いようです。
「/etc/cron.d/」ディレクトリ内の「0hourly」ファイルを確認してみると、「/etc/crontab」と同じ書式で書かれていることが分かります。
「/etc/cron.d/0hourly」ファイル
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
01 * * * * root run-parts /etc/cron.hourly
cronが動かない場合
cronが動かない場合の切り分けとして下記の方法を試してみてください。
- ログを確認
- メールの確認
- ファイルのパーミッション・所有者の確認
- パスの確認
- 改行コードの確認?
- crondが動作しているか確認