Ubuntu Magazineの記事を参考に、まがりなりにも自分でサーバーを構築してから早半年。といってもファイルサーバーとDLNAのメディアサーバーくらいの機能しかないわけですが、それでもかつてに比べると少しは成長したなぁと思います。
さて、そんな初心者Linuxサーバー管理者が日々ちょくちょく疑問に思っていたこと。それは /etc/init.d/なんとか と serviceコマンドを使うのは何が違うのかということ。調べていると、sshサーバー一つ立ち上げるのも、/etc/init.d/sshと書いてあったり、service sshと書いてあったりするわけですが、これって何が違うんだろう?という。さらに考えてみると、/etc/init.dじゃなくて/etc/initなのもあるよな、何が違うんだろ…とかも思ったり。
まぁ、/etc/initと/etc/init.dがあるのは歴史的経緯で深い意味はないんじゃね、んで/etc/init.d/sshって入力するの面倒くさいからserviceコマンドがあるんじゃね、くらいの認識でした。が、Ubuntu Server 実践バイブルなる本によると、別の説明がありました。
initデーモンの違いを吸収する
まずLinuxにおいて最初に立ち上がるのがinitデーモンです。で、このinitデーモンには昔ながらの SysV init というものと、比較的新しい Upstart ってのがあるらしいです。Ubuntuで使われているのはUpstartのほうなのですが、サーバーのソフトウェアにはSys Vのスクリプトしかなかったりします。なので、UpstartにはSys Vベースのinitスクリプトを解釈する互換機能もあるようなのです。
深いことはよくわかりませんが、要はSys V互換のためのサービス定義と、Upstartベースのサービス定義の二種類があるということです。で、/etc/init/*にあるものはUpstartのサービス定義ファイルで、/etc/init.d/*にあるのはSys V互換のサービス定義ファイル、ということだそうです。
あー、それで/etc/initだったり/etc/init.dだったりするのね、と理解。serviceコマンドがあれば、何がinitで何がinit.dだったかとか考えなくて済むということになります。Upstartへの置き換え作業も逐次進んでいるようですし、事情を考えるとUbuntuではserviceコマンドを使うのがよいわけですね。また、違いもわかり今後は各所の記述の違いでもやもやすることもなくなりました。なるほどなるほど。
ところでUbuntu Server 実践バイブルですが、これ非常によい本で、買ったことは満足しています。が、しかし!最近、達人出版界でpdf版が発売されたんです(Ubuntu Server 実践バイブル 現場で即運用に役立つサービス設定のノウハウ【委託】 - 達人出版会)。紙で欲しいという人は多いでしょうが、私は電子版のほうが欲しかった!しかも電子版のほうが安いし!こうと知っていたら電子版が出るまで待ったのになぁ!
コメント