当サイトではアフィリエイト広告を利用しています。

【cron】解決!ubuntuで定刻シャットダウンを設定できないのか??【Linux】

2021年5月7日

約半年前にLinuxの練習がてらファイルサーバ(samba)を作った中で、解決できなかったことの一つ、

Linuxサーバを指定した時間に自動でシャットダウンをさせる!!

これが中々うまくいかず悩んでいましたが、今この瞬間解決したので、解説したいと思います。

なぜ、定刻シャットダウンを行う必要があるのか?

単純に電気代が勿体無いからです。

webサーバや100人以上の利用者がいて24時間誰かしらが触る可能性のあるサーバであるならば必要のない機能ですが、私が構築したのは単なる家族が使えるファイルサーバなので、深夜は全員寝ていて誰も使わないことがわかっています。
誰も使わないのに電気代をかけて立ち上げるなんて勿体なすぎます。

基本的な時間指定シャットダウンの設定方法

設定するものは「etc」ディレクトリの中にある「crontab」というファイルを編集して設定します。

#vi /etc/crontab

上のコマンドでは「vi」を例に挙げましたが、テキストエディタであればnanoでもvimでもなんでもいいです。

ですが、私は「vi」を使ったことを後悔しています。。。

理由は後述します。

テキストエディタでcrontabを開いたら、以下の設定を記述します。

# m h dom mon dow user command ←これはデフォルトで書かれています。
0 0 * * * root /sbin/shutdowu -h now

設定の解説です。

一番左にある0から順に役割を説明します。

0・・・「分」部分の指定(0~59)

0・・・「時」部分の指定(0~23)

*・・・「日」部分の指定(1~31)

*・・・「月」部分の指定(1~12)

*・・・「曜日」部分の指定(0~6)(日曜日が0)

root・・・「ユーザ」部分の指定 シャットダウンは他で設定してしていない限りは「root」しか行えません。

/sbin/shutdown・・・「shutdown」コマンド

-h・・・コマンドオプション(-rで再起動)

now・・・待たずにすぐシャットダウン

また、設定する時間は日本時間で設定します。

その為、例の設定では、、、

毎日0:00 になったらシャットダウンする様に設定しました。

設定を書き込めたら、保存してテキストエディタから抜け、サービスを再起動してあげます。

#service cron restert

本来であれば、これで設定は完了です。

なぜ、正しく記述したのに指定の時間にシャットダウンが行われないのか

は?ナニコレ。。。

下へスクロールしてみると、、、

18行目に理解できないほどの大量の文字列が、、、(見せられないよ)

半年前の私は、この大量の文字列が何かしらの機能を有していて削除してはいけないものであると思っていたので、避けて考えていました。

しかし、、、

こちらで行われていたやり取りを見ると、、、

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

は?まじ??

エラーの部分を飛ばしながら読んでくれないそうです。

確かに、serviceのステータスを見るとactive (running)にはなっていましたが、いくつかエラーを吐いていました。。。

ただ、LinuxのLの字もわからないでノリで始めた半年前の私は(今もですが)vimを入れずにずーーーっと色分けされないviで調べていたのでどこがエラー部分なのかわからない。。。

 

それから半年後、ふとsambaの設定状況を確認したくてvimを入れました。

待てよ。。。これcrontab確認できるじゃん!

vimで開いてみると、機能している設定用コマンドは色がついているのに対し、18行目は機能を有さない大量の白文字。。。

完全にこれです。

削除してサービスを再起動したら、エラーもなく普通に落ちました。

こんなことで半年悩むとかホントあり得ない。。。

crontabの設定ポイント

  1. crontabはエラー一つですべて機能しなくなる。
  2. 一文字の間違いも許されない。
  3. エラーの有無は #servise cron status で確認する。
  4. エラーの原因部分はシンタックスハイライト(色分け)でわかりやすく
  5. 見つけたエラー、機能していない部分はすぐに排除

自動定刻シャットダウンの設定ができない方はcron自体が動かないでいる可能性があるので、まず上の5つに注目してみてください。