「サービス」と「/etc/init.d/」の違いは何ですか?


113

私はしばらくの間、Ubuntuフレーバーのオンとオフの両方でサーバーのインストールを管理してきました/etc/init.d/。今、私はこのメッセージを受け取ります:

root@tatooine:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048

これはUbuntuの最新のLTSでもたらされたようです-なぜですか?何がそんなに悪い/etc/init.d/とどのような/の間に違いがあるserviceとは/etc/init.d/


3
成り上がりクックブックは、切り替えのための合理的なの良い説明が含まれています。
アーンドリューク

回答:


103

/etc/init.dスクリプトは物事を行う古い方法です。それらはSystem V標準に由来します。ただし、これらのスクリプトは特定の順序でのみ起動されるため、実際の依存関係を確立することはできません。

したがって、upstartは、すべての/etc/init.dスクリプトをupstartスクリプト(/etc/init)で置き換えることを目的として開発されました。

service/etc/init.dスクリプトからupstartスクリプトへのスムーズな移行を可能にします。今後、ますます多くのスクリプトがupstartに転送されても、両方の可能性が見つかるため、サービスは引き続き機能します。


6
Upstartは現在段階的に廃止されますよね?
間違ったユーザー名14年

6
systemdは計画が整ったらupstartを置き換えます-14.04 LTSはupstartを使用します。これはMark Shuttleworthによって、Losing丁寧に
パッチではなく、

28

また、サービスコマンドのマニュアルページを確認してください。 man service

service予測可能な環境でスクリプトを実行します(作業ディレクトリは/で、LANGとTERMの2つの環境変数のみが設定されます)。また、実行する機能も追加されます--full-restart。まとめると:

  1. service / etc / initまたは/etc/init.d(upstartまたはSystem V)からスクリプトを実行できます
  2. service 予測可能な環境でスクリプトを実行します。

「予測可能な環境」の側面は、スクリプトが何らかの理由で環境変数に依存している場合に問題を引き起こす可能性があります。おそらくそれを回避する方法がありますが、私はそれが何であるか分かりません、そしてそれはこの質問の範囲を超えています:)


2
こんにちは@Joe Marty、これはまさに私が現在実験中の問題です。「service myservice start」でデーモンを起動する場合は存在しないが、「/ etc / init.d / myservice start」で起動する場合は存在する「DISPLAY」環境変数で中継するサービスがあります。この変数を使用可能にする方法についてのアイデアはありますか?
frandevel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.