問題の起きた環境
ハード:Raspberry Pi 2 Model B
OS:debian 8
起きた問題の詳細
定期的に実行したいコマンドがあったので、hogehoge.shを作成して/etc/cron.hourly内に配置したのですが何時間待っても、実行されないという問題が発生しました。
とりあえず、情報収集して、以下のことは判明しました。
・crondが動作していることを確認
→動いている。
・hogehoge.shのパーミッションは755
→実行権限はちゃんと与えられている。
・hogehoge.shのシバンは#!/bin/shになっているので、/bin/sh hogehoge.shを実行
→hogehoge.shに記述したコマンドは実行された
→→hogehoge.sh内の記述がおかしいわけではない。
以上の事から、crondは動いているのにcron.hourlyが動いてないようだと考えました。
debian8でもcronのログはデフォルトでは出力されないため以下のサイトを元にログ有効化に
みざるきかざるいわざる Debian 6.0 (squeeze) での、cronのログ有効化
cronのログを見ると、
︙
Jan 2 19:17:01 raspberrypi CRON[2321]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jan 2 20:17:01 raspberrypi CRON[2337]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jan 2 21:17:01 raspberrypi CRON[2361]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jan 2 22:17:01 raspberrypi CRON[2377]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jan 2 23:17:01 raspberrypi CRON[2393]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
︙
原因・解決策
cronのログを見て、run-partsというコマンドが何らか問題になっているのではないかと思い、ググりました。
run-partsが認識するファイル名ではまった - うまいぼうぶろぐ
debian系ではファイル名に"."が入っていると。
redhat系ではファイル名の末尾が"~"か","であると。
実行されないそうです。
ファイル名をhogehoge.shからhogehogeに変更したところ、無事にコマンドが走りました。
著者の所感
これまでredhat系しか使った頃がなかったので知りませんでした。
入門書などでは基礎的な知識なのかもしれませんが、基本独学なのでまったくしらずはまってしまいました。