crontabの書き方とcrontabでのサーバ時刻合わせ設定 (AWS EC2 - Amazon Linux -- NTP)

  • 24
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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」ファイル

/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が動作しているか確認