min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

RaspberryPi cronが効かない → /etc/crontab のパーミッションと所有者を見直して解決

 

 

RaspberryPi 1 の調子が悪かったので Raspbian を再インストールした。各種設定ファイルをバックアップから復帰したものの、cronだけがなぜか実行されない。

このへんを参照して対応する。

tamulapin.hatenablog.com

 

うまくいっている RaspberryPi 3 と設定を比較しながら進める。

Pi1 … cron が効かない。今回直したいやつ

Pi3 … cron が効いている。正常なやつ。

 

まずはサービスの起動を確認。通常権限(ユーザ:pi)で ps aux を叩く。

$ ps aux | grep cron

Pi1もPi3も同様にサービスが起動していた。サービス自体は問題なさそう。

Pi1

f:id:min117:20170625102604p:plain

Pi3

f:id:min117:20170625102600p:plain

次に、/etc/crontabパーミッション・権限が正しいかを見てみる。

Pi1

f:id:min117:20170625102845p:plain

Pi3

f:id:min117:20170625102849p:plain

Pi1のほうの /etc/crontab のパーミッションが 744( -rwxr-xr-x )になってしまっている!原因はこれか。正しくは 644( -rw-r--r-- )になってなきゃいけない管理者権限に(sudo -sして)直す。

$ sudo -s

# chmod 644 /etc/crontab

ーーー

まだ改善しない。なぜだ?と思って pi3 と比較してみると、/etc/crontab の所有者が管理者 root であるべきところ、通常ユーザー pi になってしまっていた。これも直す。

# chown root:root /etc/crontab

f:id:min117:20170625103324p:plain

無事に動いた。まとめ。

cronが動かない時に試すコマンド3つ

sudo ps aux | grep cron

chmod 644 /etc/crontab

chown root:root /etc/crontab

 

これでもうまく動かない時は、時刻設定(ntp)を見直す。

min117.hatenablog.com

 

さらに注意点。

cron内でdateコマンドを使うときは%をエスケープする必要あり。

f:id:min117:20190616095125p:plain

qiita.com


qiita.com