サービスをすべてのランレベルで開始できないようにしますか?


61

foo現在、ランレベル3以上で開始するサービスがあります。を使用せずにこれを停止するにはupdate-rc.d foo stop 3 .どうすればよいですか?

(つまり、ランレベル1で有効fooにした場合、ランレベル3に変更すると無効になりますか?)

Debian GNU / Linux Lennyを実行しています。

回答:


57

「停止」という用語は、デーモンの起動を妨げるものではなく、指定されたランレベルに入るときにデーモンをシャットダウンします。

単一のランレベルからサービス/デーモンを削除したい場合は、update-rc.dbei freiheitで指摘したように、または単にシンボリックリンク削除し/etc/rcX.d/ます(Xはランレベルです)。サービスを自動的に開始したくない場合update-rc.d -f foo removeは、トリックを行います。


2
Debian 8でそれを行う方法はありますか?sudo update-rc.d -f sunrpc remove動作しません; 再起動後もまだ存在しています。

Debian 9これは私には役に立たなかったので、sudoが必要だとわかりました。sudoを忘れた場合、update-rc.dはフィードバックを提供しません。リンクがなくなったことを確認しましたls /etc/rc*.d
ジェイソンダンケルバーガー

コマンドはUbuntuの上で失敗した16.04
ステファン

正しいサービス名を渡すようにしてください。update-rc.dは、存在しない場合はフィードバックを提供しません。
marcovtwout

後で再度有効にしたい場合はどうしますか?以下の@ "Not Now"の答えの方が優れています。update-rc.d apache2 disable
ワディM.

54

sysv-rc-confを使用してLinuxスタートアップアプリケーションを構成します

apt-get install sysv-rc-conf

他の人が指摘したように、cmd行のupdate-rc.dもここにあります。

たとえば、実行

update-rc.d apache2 disable

すべての実行レベルからapache2を無効にします。


素晴らしいツール-それについて知りませんでした。ありがとう!
ペラ2009

1
これにより、実行中のサービスが停止することはありません。これを実現するには、追加する必要があります。service foo stopまたはサーバーを再起動します
rubo77

15

ショート:

これを迅速に行うための信頼できる方法はありません。

長いです:

現在のDebian(2012-06-01時点で不安定なDebian)には、現在、サービス/デーモンを一貫して無効にする信頼できる短い方法がありません。–デーモンパッケージのアップグレードは無条件に「/etc/init.d/package restart」を実行するため、このランレベルで無効にするかどうかを決定します。

デーモンが起動しないことを確認するには、次のようにします。

  • アンインストールする
  • /etc/init.d/xyzスクリプトをローカルに流用します(この方法では、ツールは見つかりません)。
  • 対応するパッケージの構成ファイルを使用/乱用して、そのスクリプトの早期終了を引き起こします(たとえば、initスクリプトからソースされている場合は、/ etc / default / xyzに早期に「終了」を入れます)
  • そのデーモンを起動しない事前定義された「公式」な方法については、そのinitスクリプトを調べてください

Debianにはinitスクリプト用のinit-policy-somethingステップがあります/ありましたか?–私はそれを使用しようとしましたが、複雑であり、バグを見つけましたが、二度と触れませんでした。

更新:

「initd」に代わる「systemd」に切り替えます。debianパッケージが存在し、次のような方法でサービスを無効にできます。

cd /etc/systemd/system
ln -s /dev/null xyz.service

1
+1これはとても役立つ答えです。もしそれがなかったら、後で刺されたでしょう。ありがとう!

あなたunlink xyz.serviceも同様にできますか?
jaggedsoft

@NextLocal、私がそれを書いた理由を忘れましたが、サービスにSystem V initスクリプトsystemdがある場合、それらを使用すると信じています。–したがって、リンクはそれらを検索しないように指示します。
ロバートシーマー

/etc/default/xyzファイルを編集して追加してexitも、パッケージャーが次回のアップグレード時にファイルを正しいバージョンで上書きすることはできません。(パッケージは構成ファイルを保存します。ほとんどの場合、initスクリプトはそのように表示されません。)したがって、ほとんどの場合、これは役に立ちません。
アレクシスウィルケ

Devuanが助けになります:systemdの代わりに、古典的なSysV rc.d / init.dシステム(または、誰かがそれを選択した場合はopenrcも)を受け入れます。
チャバトス

5

このコマンドを実行する

apt-get rcconfのインストール

インストールしたら、SSHでrcconfを実行すると、ブート時に実行するように設定されているすべてのサービスを表示するダイアログボックスが表示されます。スペースを押して特定のものを無効/有効にすることでそれらを選択します。完了したら、[OK]をクリックするだけで、そのサービスは次の起動時に再び起動することはありません。これを何年も使用しています。私のようなDebian / Ubuntuユーザーにとって非常に便利なツール。


1,2,3のように簡単!この小さなコマンドラインツールをありがとう。
ダニエラワラニー14年

2

私はあなたが達成しようとしていることを混乱しています。

fooを実行する実行レベルは何ですか?

常に実行したい場合は、update-rc.d foo defaults;を使用します。0、1、6で停止し、2、3、4、5で実行したままにします(1はシェル以外は実行できません。0と6は停止して再起動します)

実行する実行レベルを正確に指定する場合:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .


1

Debian7からinsservを使い始める

すべてのサービスとランレベル情報を出力します

insserv --showall

リストされたスクリプトをすべてのランレベルから削除します

insserv --remove [specify_script]

0

UbuntuのBootup Managerはsysv-rc-conf lightのようなもので、より使いやすいGUIバージョンであり、このスレッドを読んでいる多くの人はそれを高く評価するでしょう。

http://www.marzocca.net/linux/bum.html


0

赤い帽子ベースのシステムでは、使用できます

chkconfig httpd off
chkconfig httpd --del

ランレベルからサーバーを削除するには

debianベースのシステムでは、すべてのサービスは/etc/rc?.d/ディレクトリにあるファイルによって開始されることになっています。これらのファイルは/etc/init.d/ディレクトリにある対応するファイルへのシンボリックリンクを持っています。サービスをデフォルトで開始しない場合は、/ etc / rc?.dディレクトリから名前を変更/削除できます。変更は、パッケージのアップグレード時に開始リンクの1つがまだ表示されている限り保持されます他の(3,4および5)ディレクトリ。または、update-rc.dコマンドを使用してリンクを変更できます。その後、サービスを開始する場合は、/ etc / init.d / service_name startを使用して開始から終了までそのままにしておきます。停止、再起動、リロードなどの使用可能なオプションを提供します...

ただし、sysv-rc-confを使用して無効にできると思います。


質問には、FedoraやRed Hatではなく、Debianタグが付けられています。

0
sudo update-rc.d SERVICE disable

実行レベルを指定する場合。

sudo update-rc.d SERVICE disable|enable [S|2|3|4|5]

サービスをプログラムの名前に変更することを忘れないでください。

sudo service SERVICE restart

0

スタートアップスクリプトを別の場所にバックアップして、/ etc / init.d /から削除してみませんか?update-rc.dが機能しない場合。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.