とりあえず稼動。 | 備忘録的ななにか。。。(工事中)
やっとマイクラのマルチ鯖をまともに稼動できた
といっても最低限のことができるだけ
毎夜7時に起動
夜中の3時に終了
鯖落ちしたら自動復帰
これだけ



cronの使い方がいまいちわからなかったり、
なぜかrtcwakeでうまく再起できなかったり、
ついでにchkconfigが最初から入ってないことにおどろいたり、
serviceコマンドがうまく動かなかったり。。。

chkconfigって最初から入ってなかったっけubuntu
どうやらsysv-rc-confとやら使えってことらしいのだけど
それも最初からははいってなかったり



つかってるPCが鯖機らしいんだけど、
BIOSにWake on LANが設定にない、RTCのタイマー起動もない。。。
マジで鯖機なのかこれ。。。とか、
足りない頭で思いつく限りの呪詛を吐き、
さながら思春期こじらせた厨学生のごとく家族に対して関わるんじゃねぇオーラをだしながら
丸一日PCに張り付いてたOrz
本当に申し訳ない。。。

結果、いつの間にかうまくいってしまった
理由がわからないって気持ち悪い。。。



rtcwakeは使い方が微妙にわかり辛い。。。
特に指定時間に起動しようとするのがうまくいかない
よくネットでみるコマンドをコピペするなって言われるけども
英語のman読むのがだるくてとりあえずそのまま使った

#rtcwake -m off -l -t $(date +%s -d "2015-03-04 19:00")

っていうコマンドを打ったのだけれど、自分の環境ではうまく動かなかった
で、UTCだのRTCだの
訳わかんなくなってきた

苦肉の策として

#rtcwake -m off -s $(expr $(date +%s -d "$(date +"%Y-%m-%d") 19:00") - $(date +%s))

こんな感じのコマンドにした
ちなみにこれをこのままcrontabに書いたらうまく動かなかったから
最終的にシェルスクリプトで一個一個変数に格納した

date +"%Y-%m-%d"
で年月日を取得
これに起動したい時間を追加して
2015-03-04 19:00
の書式で起動したい日時を取得

date +%s
これでどうやら1970年1月1日から現在までの秒数を取得できるらしい
これを利用して
date +%s -d "2015-03-04 19:00"
で起動したい日時の秒数を取得して
最終的に
expr date +%s -d "2015-03-04 19:00" - date +%s
をすることで、起動したい時間までの秒数を取得
これをrtcwakeの-sオプションに渡す

こうすればUTCだろうがRTCだろうが関係なく
現在時刻から起動したい時間までの秒数が取得できる!
はずである・・・

スペックによって、負荷によって、
若干のズレはあるだろうけどもまぁたぶん大丈夫なんじゃないかなぁと

最初にうまくいかなかったコマンドとやってることは似たようなもんだから
最初のでしっかり動くならこんなめんどくさいことせずにすむんだけども。。。

どうにも時間管理系は難しい
UTCとRTCの違いなんかはすぐわかっても、
どこで、どのコマンドがどっちを基準にどう動いてるかを気にすると、
途端に話が昼ドラ並にどろどろする。
いや、自分の理解が全く追いついてない、
もしくは頭の端っこでは理解しようとしていても
本心はこれっぽっちも理解しようと思っていないのが原因かも。。。
自分の悪いクセである



鯖落ち監視スクリプトは単に
screen -ls | grep -c "起動時につけたスクリーンの名前"
が0になった時を一定間隔でcronに監視させて判別してるだけ
なので、スクリーンに名前をつけて起動しないとダメ
これにでメールも送信できるようにすれば完璧
近いうちに鯖管理用アド取っておこうとおもう



とりあえずこれで起動自体はできるようになったけど、
ユーザーがログインしたら教えてくれる機能なんかがほしいところ
Bukkitではないしどうなのか。。。
一応そういうプログラムもある感じだけども、めんどくさそう
今のところは接続要求のあったipを監視する方向でどうにかしたいところ
そもそも最大5人もいかない身内鯖ですしおすし



後一個、ものすごくめんどくさかったものがあるけども、
長くなったので次で。。。