お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2015-11-05 21:57:28

ybr170
メンバ
登録日: 2013-10-23

crontabが効かない

crontabで定刻シャットダウンをしていたのですが、効かなくなりました。
中身は特に編集していません。
最近crontabの仕様が変わったりしたのでしょうか。
考えられる原因を教えて下さい。
ubuntu14.04を使っています

オフライン

 

#2 2015-11-10 05:13:15

ybr170
メンバ
登録日: 2013-10-23

Re: crontabが効かない

トピ主です。
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のマニュアルを読んでも原因を特定できず、正直自力ではお手上げです。
どうか皆さんの知恵をお貸し下さい。

オフライン

 

#3 2015-11-10 07:15:24

ry
メンバ
登録日: 2008-07-30

Re: crontabが効かない

ybr170 による投稿:

cronの設定ガイドというホームページの記述を見て、原因を調べてみました。
(https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html)

2004年の記述なので、色々と仕組みが変わっているはずです (詳しくは知りませんが

最近の ubuntu の場合、crond のプロセス名は cron です。
動作状況は sudo service cron status コマンドで確認できます。

オフライン

 

#4 2015-11-10 07:16:32

ry
メンバ
登録日: 2008-07-30

Re: crontabが効かない

ybr170 による投稿:

考えられる原因を教えて下さい。

crontab 等、設定内容を開示していただかないと、誰も回答できないと思います。

オフライン

 

#5 2015-11-10 20:28:36

ybr170
メンバ
登録日: 2013-10-23

Re: 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

オフライン

 

#6 2015-11-11 07:57:41

ry
メンバ
登録日: 2008-07-30

Re: crontabが効かない

設定をざっと見た限りでは特におかしいところはなさそうなので、cron で shutdown を実行する時間帯の grep CRON /var/log/syslog の (場合によっては grep CRON /var/log/syslog.1 も) 結果も提示ください。

オフライン

 

#7 2015-11-11 21:11:00

ybr170
メンバ
登録日: 2013-10-23

Re: crontabが効かない

ありがとうございます。

コマンドを打ちましたが、何も表示されませんでした。
syslogファイルを見てみたところ、中身は空でした。
BleachBitを使ってちょくちょく不要ファイルを消しているので、そのときに一緒に消えてしまったのかもしれません。(古いシステムログファイルのところにチェックが入っていました。)

オフライン

 

#8 2015-11-12 17:34:04

natumikano
メンバ
登録日: 2015-10-28

Re: crontabが効かない

こんばんわ
設定時刻のフィールドなんですけれども分、時、日、月、曜日の5つだと思います

auto shutdown3

のところでは設定時刻のフィールドが1つ多い気が致しますのでアスタリスクを1つ消してみてはどうでしょうか
私のほうでもybr170さんの設定を/etc/crontabに貼り付けて試してみましたが時刻フィールドを1つ消すことでシャットダウンされました

オフライン

 

#9 2015-11-13 07:41:24

ybr170
メンバ
登録日: 2013-10-23

Re: crontabが効かない

アスタリスクを消したら動くようになりました。
ryさん、natumikanoさん、ありがとうございました。

ふとした疑問は残りましたが。
auto shutdownの下の行には文法間違いがなく、コメントアウトをしていないので、実行されるのが普通じゃないのかな〜と。
思い出してみればauto shutdown 3 を追記するまでは、auto shutdownが動いていたような気がしますし。
上から順に実行されるのがプログラムの常識だと思っていましたが、crontabの場合、どこか1行でも間違った記述があれば正常に動かないということなんでしょうかね。

オフライン

 

#10 2015-11-13 19:22:07

natumikano
メンバ
登録日: 2015-10-28

Re: crontabが効かない

動いたみたいでよかったです
私も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の設定ファイル自体を無視してしまうのかな...と感じました

オフライン

 

#11 2015-11-14 08:49:38

ry
メンバ
登録日: 2008-07-30

Re: crontabが効かない

/etc/crontab ファイルは、一箇所でも記述ミスがあるとファイル全体が無効になるようです。

ですから、/etc/cron.d/ ディレクトリに crontab と同じ書式で記述したファイルを置く方法を採っています。
または /etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly ディレクトリに、実行可能なスクリプトを置きます。
どちらの場合でも、/etc/crontab ファイルには手を触れません。

このようにすると、万一記述を間違えても、それまでに登録されている cron ジョブに影響が及ぶことがありません。

オフライン

 

#12 2015-11-14 22:05:24

ybr170
メンバ
登録日: 2013-10-23

Re: crontabが効かない

natumikanoさん検証ありがとうございます。
ryさんのお話と合わせて、勉強になりました。

オフライン

 

#13 2015-11-15 01:59:43

natumikano
メンバ
登録日: 2015-10-28

Re: crontabが効かない

成る程
私にとっても少し理解を深めると共にお作法を学べる良い機会となりました
お二方、ありがとうございました

オフライン

 

Board footer

Powered by FluxBB