概要
ラズパイを買って、なにかしら定期処理させようとしたときにちょっとハマった。
そもそもcron触ったことない場合のcronの注意と
ラズパイだとコマンドちょっと違うよっていう話。
僕と同レベルの初学者向けに書いてます。
ラズパイ編
cronの起動、再起動
/etc/init.d/cron start
/etc/init.d/cron restart
↓は検索するとよく出てくるけど
service crond restart
debian(ラズパイのOS)だとそんなものないよってなるので注意。
ログ
設定
/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
以下の記述がデフォルトでは、
コメントアウトされてるので、解除。
#cron.* /var/log/cron.log
↓
cron.* /var/log/cron.log
確認方法
当たり前だけど、これでいけます。
cat /var/log/cron.log
cron
設定方法
以下のコマンドでエディターが開きます。
色々書いてるけど、一番下に実行したいコマンド書いたら実行されます。
crontab -e
※PHPを実行したいけどエラーが出たとき
フルパスで書くのが重要
例えば、
/var/www/html/cron.php
を実行したいとき。
このファイル内でなにかしらインクルードしてる場合は、
cron.php
include("./hogehoge.php")
↑こう書くとエラーが出る。
cron.log
(CRON) error (grandchild #***** failed with exit status 255)
なのでフルパスで書いてあげる。
cron.php
include("/var/www/html/hogehoge.php")
また、実行したいファイルでなく、PHPの場所も書いたほうがいい。
僕は書いたら動きました。
* * * * * /usr/bin/php /var/www/html/cron.php
終わりに
間違ってたら指摘ください