さくらのVPS cron で 自動 再起動 の巻
現在、このブログは「さくらのVPS 2GB SSDプラン」で運用しています!それ以前は、自宅サーバーのMac mini G4君で運用していましたが、そのスペックから1週間に1回ほど再起動させていたのですが、OSがMac OS X Serverだったので
GUIからスケジュール管理で予約リブートの設定が出来て大変便利でした…
今回、さくらのVPS(CentOS6)にて cronコマンドを使って自動再起動にチャレンジしてみましたので、その備忘録です。
さくらのVPS CentOS編
cronとは…
決められた時刻にコマンドを定期的に実行させるためのデーモンプロセスです。cronではコマンドだけにとどまらず、シェルスクリプトや、PerlやPHPなどのインタープリタ言語で書かれたプログラムも動作させることができます。
という事なのですが…その前に
再起動ってどうやれば良いの?
状態だったので、まずはコマンドラインで再起動をやってみましょう!(笑)
CentOS コマンドラインから再起動
まずはターミナルからsshでVPS上のCentOSさんにアクセス!root権限からでないと再起動関係のコマンドが使用できませんので、あしからず…
shutdownコマンド
その名の通りOSをシャットダウン(電源を切る状態に)します!オプションで色々指定できますが、その中に「再起動」がありますよ、っと…
1 |
shutdown [ -h | -r ] [ -fqs ] [ now | hh:ss | +mins ] [ message ] |
オプション解説
1 2 3 4 5 6 7 8 9 |
-h システムをシャットダウンする -r システムを再起動する -f 高速指定。再起動の際,ファイル・システムのチェックを行わない -q メッセージを表示しない -s シングル・ユーザー・モードで再起動する now すぐにシステムのシャットダウン・再起動を行う hh:ss 指定した時間にシステムのシャットダウン・再起動を行う +mins 現在より指定時間後にシステムのシャットダウン・再起動を行う。単位は分 message シャットダウン・再起動時にユーザーに送るメッセージを指定する |
こんな感じで
再起動は「-r」オプションと「now」オプションを組み合わせて
# shutdown -r now 直ちに再起動!これでOK
コマンド入力後、シャットダウンしますので当たり前ですが一度コマンドライン(ターミナル)はCentOSさんからログアウトします….
そろそろ起動したかな?って見計らって再度sshでログインして下さいw
間違って# shutdown -h now 「r」と「h」を勘違いしてしまうと再起動ではなくシャットダウンしてしまいます!コマンドラインはログアウトし以後立ち上がりません(笑)さくらのVPSの場合、WEBのコントロールパネルからVPSを起動しなおさないといけません…もちろん経験済みです(笑)
# shutdown -h 0:0 これは0時にシャットダウンする!です…
予約みたいな感じですかね?再起動の度に毎回、時間指定で shutdown -r 0:0 コマンドを打っても良いですが(良いわけがない)毎回決まった時間に自動で実行できたら便利ですよね?
はい、そこで「cron」さんの登場です(笑)
ちなみに
rebootコマンド
こんなコマンドもあって意味は「システムをすぐに再起動する」です。
shutdown -r -q now と同じ意味になります…
と、基本コマンドの説明を確認したところで
さっそく「cron」さんの設定です!
CentOS で cron を 設定する流れ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// root権限に移行 sudo -s // cronが実行されているか確認 # service crond status crond (pid 1612) を実行中... // 停止している場合はcronの起動 # service crond start // システム起動時に自動起動 # chkconfig crond on // 自動起動設定の確認 # chkconfig --list crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
3:on なので自動起動が設定されてる事を確認しました!
これで「cron」さんが起動していて、なおかつ再起動後も「cron」さんが自動で起動する事が確認できましたね?それでは、次に実際に「cron」さんを使用するわけですが…
基本は /var/spool/内の cronディレクトリの中に「cron」さんにやってもらいたい事を記述したファイルを作成する事によって「cron」さんを使用します…
ここでは crontabコマンドを使用して直接ファイルを作成してみます…
crontabコマンド
1 |
crontab [ -u ユーザ名 ] { -l | -r | -e } |
オプション解説
1 2 3 4 5 6 7 |
-u ユーザの指定、省略した場合はコマンドを実行したユーザで設定されます -l 現在の crontab を標準出力へ表示さます -r 現在の crontab を削除する -e 指定されているエディターを使用して現在の crontab を編集するのに使われます。 |
オプション「-r」は、cronさんの設定を速攻で全部消しちゃうらしいので
危険です!注意です!(爆)
何度も書きますが…「-r」 オプションは、現在の crontab の設定をコマンドを打った瞬間に削除します = 何も確認されずに削除されるので
使用には十分に注意してください!
「e」と「r」はキーボード上で隣あわせなので、間違って押してしまって編集しようとして全部削除してしまったという悲惨な事件が各地で発生している模様です…
(上記の理由で crontab -eは使用しない!という極論まであるらしいのです)
そんな事態に陥らないようにするための方法もあるらしいですが、そのうち勉強してみます…今は厳重注意でcrontabを使用中です(笑)
ちなみに
-i オプション
-iオプションというのがあって、これを付けておくと削除する前に「ホントに消すの?」って聞いてくれます…
#crontab -ir
crontab: really delete root’s crontab?
こんな感じで、この後に本当に削除するなら「y」「yes」しないなら「n」「no」と打込むまで一時処理を中断してくれますが…
「-i」を付けるの忘れたら意味がありませんね…orz
それでは、重々注意(笑)しながら crontabコマンドを使用してみます…エディター(vi?)が立ち上がりますので既述後に保存して終了です!
1 2 |
# crontab -e 00 4 * * * /sbin/shutdown -r now |
例では「-u」省略、 root で crontab を実行したので /var/spool/cron ディレクトリに root というファイルが上記の内容で作成されています…
ちなみに「毎日AM4:00に再起動してね」って内容です!
1 2 3 4 5 |
// 毎日 am5:45 再起動だったら 45 5 * * * /sbin/shutdown -r now // 毎日 am3:00 apache のリスタートだったら... 00 3 * * * service httpd rstart |
分 時 日 月 曜日 コマンド の順番で記述する様ですよ…
ちなみに曜日は0-7 (0または7は日曜日)で表記します!
0=日、1=月、2=火、3=水、4=木、5=金、6=土、7=日 です。
ここで復習です…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// cronで設定された内容の確認は # crontab -l 45 5 * * * /sbin/shutdown -r now // 設定された数を確認 # ls -l /var/spool/cron // エディターで編集 # crontab -e // ファイルのあるディレクトリ /var/spool/cron/ // 現在登録されている内容を削除(確認あり) crontab -ir |
記述後は「cron」さんを再起動(service crond restart)して
準備OKです!
1 2 |
// cronの再起動 service crond restart |
こんな感じで今回、CentOSさんを毎日am5:45に自動で再起動する設定をしてみました!今の所、問題なく毎日再起動してくれています!
cron 履歴の確認 ログファイル
再起動の履歴というか「cron」さんの実行履歴は /var/log/ にある cronに記載されていますのでlogを確認してみましょう!
「cron」さんが定時で何をやっているのか?わかります!
1 2 3 4 |
Dec 21 05:40:01 ik1-308-14445 CROND[5217]: (root) CMD (/usr/lib64/sa/sa1 1 1) Dec 21 05:45:01 ik1-308-14445 CROND[5221]: (root) CMD (/sbin/shutdown -r now) Dec 21 05:45:08 ik1-308-14445 crond[1634]: (CRON) INFO (Shutting down) Dec 21 05:45:56 ik1-308-14445 crond[1625]: (CRON) STARTUP (1.4.4) |
キチンと AM5:45 に root で shutdown -r now が実行されていますね!? cronさんでは他に時間指定の書式が色々ある様ですので
興味のある方はWEBで検索してみて下さいw
スポンサーリンク