
Ubuntu日本語フォーラム
ログインしていません。
crontabで定刻シャットダウンをしていたのですが、効かなくなりました。
中身は特に編集していません。
最近crontabの仕様が変わったりしたのでしょうか。
考えられる原因を教えて下さい。
ubuntu14.04を使っています
オフライン
トピ主です。
cronの設定ガイドというホームページの記述を見て、原因を調べてみました。
(https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html)
まずcrondが動いているか確認をせよとのことでしたが、確認するためのコマンドに疑問がありまして。
# /etc/rc.d/init.d/crond status
これなのですが、私の環境では/rc.dというディレクトリはないので、当然このコマンドは動きませんでした。
仕方なく、GUIソフトのタスクマネージャでcrondが動いているか確認したところ、
cronというものは動いていましたが、crondというものはありませんでした。
調査はこの段階止まりです。
ググっても欲しい情報に行き当たらず、manコマンドでcrontabのマニュアルを読んでも原因を特定できず、正直自力ではお手上げです。
どうか皆さんの知恵をお貸し下さい。
オフライン
ybr170 による投稿:
cronの設定ガイドというホームページの記述を見て、原因を調べてみました。
(https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html)
2004年の記述なので、色々と仕組みが変わっているはずです (詳しくは知りませんが
最近の ubuntu の場合、crond のプロセス名は cron です。
動作状況は sudo service cron status コマンドで確認できます。
オフライン
ybr170 による投稿:
考えられる原因を教えて下さい。
crontab 等、設定内容を開示していただかないと、誰も回答できないと思います。
オフライン
ご指摘ありがとうございます。
crontabの中身とcronの動作状況を示すテキストを貼ってみます。
crontabの中身はいろいろ見苦しいですが、整形すると再現性が失われると思いましたのでそのまま貼りました。
また、crond改め、cronは動いているようです。
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin #nettodesirabeta MAILTO=root #nettodesirabeta HOME=/ # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # auto shutdown 30 0 * * * root /sbin/shutdown -h now # auto shutdown 2 #0 0 * * * root /sbin/shutdown -h now # auto shutdown 3 20 7 * * * 1,2,3,4,5,6 root /sbin/shutdown -h now # auto shutdown test #21 6 * * * 1,2,3,4,5,6 root /sbin/shutdown -h now
$ sudo service cron status
[sudo] password for hogehoge:
cron start/running, process 908
オフライン
設定をざっと見た限りでは特におかしいところはなさそうなので、cron で shutdown を実行する時間帯の grep CRON /var/log/syslog の (場合によっては grep CRON /var/log/syslog.1 も) 結果も提示ください。
オフライン
ありがとうございます。
コマンドを打ちましたが、何も表示されませんでした。
syslogファイルを見てみたところ、中身は空でした。
BleachBitを使ってちょくちょく不要ファイルを消しているので、そのときに一緒に消えてしまったのかもしれません。(古いシステムログファイルのところにチェックが入っていました。)
オフライン
こんばんわ
設定時刻のフィールドなんですけれども分、時、日、月、曜日の5つだと思います
auto shutdown3
のところでは設定時刻のフィールドが1つ多い気が致しますのでアスタリスクを1つ消してみてはどうでしょうか
私のほうでもybr170さんの設定を/etc/crontabに貼り付けて試してみましたが時刻フィールドを1つ消すことでシャットダウンされました
オフライン
アスタリスクを消したら動くようになりました。
ryさん、natumikanoさん、ありがとうございました。
ふとした疑問は残りましたが。
auto shutdownの下の行には文法間違いがなく、コメントアウトをしていないので、実行されるのが普通じゃないのかな〜と。
思い出してみればauto shutdown 3 を追記するまでは、auto shutdownが動いていたような気がしますし。
上から順に実行されるのがプログラムの常識だと思っていましたが、crontabの場合、どこか1行でも間違った記述があれば正常に動かないということなんでしょうかね。
オフライン
動いたみたいでよかったです
私もauto shutdownは特に文法の間違いが見当たりませんのでここでの場合、毎日0時30分に正常に実行されると思ったのですけれども...
crontabに関するドキュメントをまだ読めていないので私自身、仕組みまではわかっておりませんが、
先ほどもう一度ybr170さんの設定を貼り付けましてauto shutdown3の文法ミスはそのままにauto shutdownの時間だけ変えて動作するか試してみたところ動きませんでした
/var/log/syslogを覗いてみますと
cron[977]: (*system*) RELOAD (/etc/crontab)
cron[977]: Error: bad username; while reading /etc/crontab
cron[977]: (*system*) ERROR (Syntax error, this crontab file will be ignored)
となっておりました
このあとにauto shutdownをまた数分後に設定いたしましてauto shutdown3の文法ミスを直して再度試してみますと無事に動きました
他にも簡単なジョブを登録してみたりしたのですがauto shutdown3の文法ミスを直さない限り動かなかったです
ですので
ybr170 による投稿:
どこか1行でも間違った記述があれば正常に動かないということなんでしょうかね。
となるのかなと思います
上のエラーにも"Syntax error, this crontab file will be ignored"とありますので、記述の間違いがありますと/etc/crontabの設定ファイル自体を無視してしまうのかな...と感じました
オフライン
/etc/crontab ファイルは、一箇所でも記述ミスがあるとファイル全体が無効になるようです。
ですから、/etc/cron.d/ ディレクトリに crontab と同じ書式で記述したファイルを置く方法を採っています。
または /etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly ディレクトリに、実行可能なスクリプトを置きます。
どちらの場合でも、/etc/crontab ファイルには手を触れません。
このようにすると、万一記述を間違えても、それまでに登録されている cron ジョブに影響が及ぶことがありません。
オフライン
成る程
私にとっても少し理解を深めると共にお作法を学べる良い機会となりました
お二方、ありがとうございました
オフライン