読者です 読者をやめる 読者になる 読者になる

EC2のCentOS6.5でrc.localが実行されない

AWS

やろうとしたこと

重たい処理をAmazonのEC2に実施させる。
お金がもったいないので、処理が必要な時だけインスタンスを起動させたい。

インスタンスの/etc/rc.d/rc.localに、
行わせたい処理及びシャットダウン命令を記述しておき、
ローカルからawscliとかで、EC2インスタンスを起動。

ということをしようとしたんですが、
悲しいかな、やって欲しい処理が実行されませぬぬぬ...

先に結論

以下をしたら上手くいきました。

chkconfig firstboot off

もうちょい詳しく

OSは、CentOS公式が配布しているというCentOS6.5です。

/etc/rc.d/rc.localには実行権限はありますし、
目的のランレベルのディレクトリにリンクが張られています。
/var/log/messagesや/var/log/boot.logを見てみましたが、特にエラーは見当たらない。

また、/etc/rc.d/rc.localの最初で、/var/lock/subsys/localをtouchしているのですが、
そのファイルが存在しないので、/etc/rc.d/rc.localが実行されていないのは間違いなさそう。

わからぬぬぬ...ということで、とりあえず登録されてるrcスクリプト群をlsしてみました。
したら、S90crondがあって、cronは動作していたので、S99localの前にあるS99firstbootが怪しくない? firstbootで何ぞ?とググると、以下のページが。

◇不要デーモンの停止(CentOS5)◇初心者のためのLinuxサーバー構築講座☆お便利.com☆

上記で言及されてる/etc/sysconfig/firstbootはrcスクリプトに記述されてましたが、
作られていませんでした。何かエラーってるのかなぁという印象。
とりあえず止めてしまって問題無さそうなので、起動しないようにしたら上手くいきました。

あとがき

同じAMIから作った別のインスタンスもみてみましたが、同じようになっていて、
どうも/etc/rc.d/rc.localは一回も実行されてないみたいでした。。
デフォルトでSSHに関する処理が記述されてるんですが、とりあえず上手くいったし、
SSH使えてるし、眠いし、もういっかな。という感じです。
何かわかったら追記しまするるる