ラズパイでcrontabを使う

1. rsyslogの設定
2. cronログレベルの設定
3. cronログの確認
4. 自動起動ソフトの登録

■1. rsyslogの設定
システムログ制御デーモンのrsyslogのcronログ出力設定を確認します。
①/etc/rsyslog.confの設定
rsyslog.conf内のcronの記載がコメントにされているようなら、#を外す。

設定ファイル: /etc/rsyslog.conf
###############
#### RULES ####
###############

#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

②rsyslogの再起動
設定変更後に、デーモンの再起動を行う。

sudo /etc/init.d/rsyslog restart

■2. cronログレベルの設定

①cronログレベルの設定
cronログレベルの設定です。ログレベルは設定内容の合計値で設定します。今回は「EXTRA_OPT="-L 15"」を設定します。

設定ファイル: /etc/default/cron

# Cron configuration options

# Whether to read the system's default environment files (if present)
# If set to "yes", cron will set a proper mail charset from the
# locale information. If set to something other than 'yes', the default
# charset 'C' (canonical name: ANSI_X3.4-1968) will be used.
#
# This has no effect on tasks running under cron; their environment can
# only be changed via PAM or from within the crontab; see crontab(5).
READ_ENV="yes"

# Extra options for cron, see cron(8)
#
# For example, to enable LSB name support in /etc/cron.d/, use
# EXTRA_OPTS='-l'
#
# Or, to log standard messages, plus jobs with exit status != 0:
# EXTRA_OPTS='-L 5'
#
# For quick reference, the currently available log levels are:
# 0 no logging (errors are logged regardless)
# 1 log start of jobs
# 2 log end of jobs
# 4 log jobs with exit status != 0
# 8 log the process identifier of child process (in all logs)
#
#EXTRA_OPTS=""

↓cronログレベルを設定
/etc/default/cron(抜粋)

EXTRA_OPTS="-L 15"

②cronの再起動
設定変更後に、デーモンの再起動を行う。

sudo /etc/init.d/cron restart

■3. cronログの確認

以下に設定ファイルが生成されたことを確認する。

ログファイル: var/log/cron.log

root@raspberrypi:~# ls var/log/cron.log

■4ソフトが自動起動する時刻の設定
一日おきとか一時間おきの場合は、/etc/cron.hourlyとか/etc/cron.daylyのフォルダーが用意されているので、この中に起動スクリプトを書いたファイルを入れることで起動できる。

しかし、任意の時間に起動したい場合は、/etc/crontab を編集する。
$sudo vi /etc/crontab

で読み込み、最後の行に

分 時 日 月 曜日 <実行コマンド>

を記入する。
0 15 * * * echo "hello."

とすると15時にhelloと表示してくれる。

5分おきの場合は
*/5 * * * * echo "hello."

複数時間を設定したい場合はカンマ(,)で区切る。
例では、午前2時5分と午前2時10分に実行される。
5,10 2 * * * echo "hello."

複数指定よりも範囲で指定した方がいい場合がある。
以下のようにすると、指定範囲で実行できる。
例では、午前2時5分、午前3時5分、午前4時5分、午前5時5分に実行される。
5 2-5 * * * echo "hello."

cronを設定は
sudo /etc/init.d/cron restart

で実行される。