私は Ubuntu 12.04.3 LTS を実行しており、Samba、DHCP サーバーなどのいくつかのサービスをインストールしています。
「halt now」、「telinit 6」などを実行すると、次の警告が表示されます。
Since the script you are attempting to invoke has been converted
to an Upstart job, you may also use the...
影響を受けるサービスが 2 回停止/開始を試行していることがわかります。1 回は Upstart ジョブを通じて、もう 1 回は init.d スクリプトをターゲットとする /etc/rcN.d フォルダー内の S/K シンボリック リンクを通じてです。おそらく、/etc/rcN.d フォルダー内のシンボリック リンクを削除するだけで済むでしょう。
フローの例:
- シェルから「halt now」を実行する
- Upstart は Samba を停止します (Samba 用の Upstart conf ファイルがあるため)
- SysV は再び Samba を停止しようとします (/etc/rc0.d/K20smbd シンボリックリンクもあるため)
ステップ 3 は不要で、醜い警告が表示されるため、理解できません/必要ありません。
なぜ、複数のデーモンに Upstart スクリプトと init.d スクリプトへのシンボリック リンクの両方が存在するのでしょうか? 各 /etc/rcN.d フォルダー内の重複したシンボリック リンクを手動でクリーンアップするのが正しい方法でしょうか?
答え1
Ubuntu には互換性init
リンクがあり、実行するたびに対応する Upstart が呼び出されます。
たとえば、を呼び出すと、sudo /etc/init.d/apache start
使用すべき便利な情報メッセージを表示する upstart-job にリンクされsudo services apache start
、その後、コマンドが自動的に実行されます。
ls -l /etc/init.d/network-manager
lrwxrwxrwx 1 root root 21 Sep 18 14:02 /etc/init.d/network-manager -> /lib/init/upstart-job
cat /lib/init/upstart-job
#!/bin/sh -e
# upstart-job
#
# Symlink target for initscripts that have been converted to Upstart.
{ lots of ASCII awesomeness }
答え2
これは私の Puppet スクリプトの設定ミスだと分かりました。
「サービス」タイプの属性「enable」は、Upstart スクリプトを認識する代わりに、SysV init スクリプトを作成しました。