Ubuntu12.04:起動時にデーモンプロセスを無効にする方法


23

私は通常、使用service start/stopまたはinitctl start/stopデーモンプロセスを起動または停止することが、今、私が探していますと、起動時の例で始まるから、デーモンプロセスを無効にすることですmysqld

現在、名前/etc/init/mysql.confを変更して/etc/init/mysql.conf.bakいますが、少し読んだ後、上記のタスクのオプションをsystemd提供していることがわかりenable & disableました。

だから、とUbuntuの12.04で同様のものがありますupstart


systemdを使用していると言いますか?Fedora 17コンピューターで使用します。systemctl [enable|disable|is-enabled] mysqld.service
-BenjiWiebe

1
@BenjiWiebe:いいえ、systemdは使用していません。systemdはubuntu 12.04 / 12.10のデフォルトではないため、upstartを使用しています。
ランラグ

1
ああ、私は今見ています...私が何を考えていたかわかりません。
-BenjiWiebe

回答:


26

次のコマンドを実行して、サービスを無効にできます。

sudo update-rc.d -f <service name> disable

マニュアルページの抜粋:

disable [S | 2 | 3 | 4 | 5]オプションで実行すると、update-rc.dは、開始リンクの名前を変更してシーケンス番号が等しいリンクを停止することにより、スクリプト/etc/init.d/nameの既存のランレベルリンクを変更します。 100から元のシーケンス番号を引いた差になります。


2
私はこれを下票するのに十分な評判がありません、そして、説明なしでそうすることはとにかく失礼になるでしょう、それでちょうどコメント:@Noobによる質問はUpstart(/etc/init/*.conf configurationを使用するUbuntu 12.04に関係しますファイル))ほとんどのシステムデーモン(@Noobで述べられているように)に対して、提案は/etc/init.d/*(古いSysVスタイル)のスクリプトを使用して開始されたデーモンに対してのみ機能します。編集:記録については、warl0ckが正解です(ありがとう!)。
xolox

3
問題は、特定のトピックのケースとしてmysqlを使用した仮想的または一般的な状況に関するものです。OPは少なくとも部分的にこの答えを認識しているように見えましたが、いくつかの有用なパッケージはupstart形式(webminやコメントの周りのソースパッケージから多くの自己構築など)を尊重しないことに注意することは後世に役立つかもしれません。つまり、このメソッドは、パッケージマネージャーでインストールされた仮想mysqlサービスの特定のポイントに対処するためにwarl0ckとMarkの回答が行うのと同じように、コンテキストの有効な部分的回答になります。
-JustinC

-fフラグは必要ありません。
ダニーマン14年

20

サービスを無効にして起動する正しい方法は、XX.overrideファイルを作成することです。

echo 'manual' > /etc/init/mysqld.override

そのようにすると、upstartサービスは自動的に開始されません


これはまだ動作しUbuntu 12.04ますか?
RSK 14

@RSKはい、試してみませんか?
デイジー14

1
私は試しましたが、私のために働いていませんでした。Lemmeが再試行し、更新されます。
RSK 14

いいえ、Ubuntu-14.04では機能しません。
ハイ天使

1
@RSK yes, why don't you just give it a try?このページのすべてのアドバイスを「試して」システムを再起動するのは非常に不便だからだと思います。
-user907860

7

@ warl0ckが正しい。この情報がUpstartのドキュメントに非常によく文書化されていることを追加したい:http : //upstart.ubuntu.com/cookbook/#disabling-a-job-from-automatically-starting

具体的には:

Upstart 1.3では、オーバーライドファイルと手動スタンザを使用して、同じ結果をより簡単な方法で実現できます[27]。

# echo "manual" >> /etc/init/myjob.override

これを行うことで同じ効果が得られることに注意してください。

# echo "manual" >> /etc/init/myjob.conf

ただし、オーバーライド機能を使用すると、元のジョブ構成ファイルをそのまま残すことができます。

元の動作に戻すには、オーバーライドファイルを削除するか名前を変更します(または、「。conf」ファイルから手動スタンザを削除します)。


5

これを支援する素晴らしいソフトウェアもあります。そのrcconfと呼ばれます。

以下を使用してダウンロードするだけです。

sudo apt-get install rcconf

コマンドで使用します

rcconf

サービスを無効/有効にするための素敵な(コマンドライン)インターフェースを取得します。


これはシステムに含まれていないので、より多くのものをインストールするのが良い答えではありません。
m3nda

しかし、本当に便利です:D
マジコ

1

起動時に実行し/etc/rc2.dたくないものに移動して名前を変更してみてください:(初期、大文字) "S"を "K"に変更します(例:S02mysqlK02mysql)。気が変わったら、それを逆にしてください。2はランレベルを指していると思います。この場合、2はデフォルトのマルチユーザーランレベルです。おそらくそれは、日常のコンピューター使用のためのほとんどのものを持っている場所です。

編集:以下のジェームズ・オゴーマンのコメントを読んでください。


1
はい '2'は実行レベルを指します。who -rまたはを使用して、現在の実行レベルを確認できますrunlevel
ランラグ

それは本当ですwho --runlevel
エマニュエルベルク

1
これはあなたが望むものを達成しますが、技術的には間違ったことです。SysV initの用語では、「S」スクリプトは開始スクリプト、「K」は強制終了スクリプトです。つまり、Sは起動時に順番に実行され、Kはシャットダウン時に順番に実行されます(またはより低いランレベルに変更)。
ジェームズオゴーマン

@ JamesO'Gorman:興味深いことに、私はDebianにいます。私の「Kスクリプト」はシャットダウン時に実行されると言っていますか?スクリプトを完全に無効にするために使用できる、危険を伴わない文字がありますか?(同じフォルダーにそれらを保持することは一種の実用的です、あなたがそれらを望むであろう新しい状況が起こるなら。)
エマニュエル・バーグ

@EmanuelBergはい、initシャットダウン時に「KXXscript stop」を実行します。シンボリックリンクを削除するか、実際のinitスクリプトから実行ビットを削除する必要があります。Debianはupdate-rc.dこれを管理するために使用していると思います。RHEL(および派生物)はを使用しますchkconfig
ジェームズオゴーマン

0

Upstartでは、サービス構成はのファイルにあります/etc/init/。たとえば、sshは設定ファイルを使用して制御されます/etc/init/ssh.conf

このファイルは、Upstartが「ジョブ」を開始するように促す「イベント」を指定します。

サービスが自動的に開始されないようにするには、いくつかの方法のいずれかを使用できます
。a
).confで終了しないようにservice.confファイルの名前を変更します。b)service.confファイルの「開始」行をコメントアウトします。

upstartの新しいバージョン(少なくともv1.3以降)では、service.overrideファイルを使用してオンラインで開始をオーバーライドすることもできるため、以下を使用できます。
# echo manual > /etc/init/service.override

最後に、サービスの構成ファイルの最後にキーワード「manual」を追加することもできます。例:
# echo manual >> /etc/init/service.conf

これは実行中のサービスを「停止」せず、自動的に開始されないようにするだけです。「手動」起動に設定している間、initctlを使用してサービスを制御します。たとえば、SSHデーモンを停止および起動します。
# initctl stop ssh
# initctl start ssh

おそらく、Upstartの最良のドキュメントはhttp://upstart.ubuntu.com/cookbook/にあります。

11.44項では、「自動起動からのサービスの無効化について説明しています。http//upstart.ubuntu.com/cookbook/#disabling-a-job-from-automatically-starting


0

まあ、私は言わなければならない

echo "manual" >> /etc/init/myjob.override

オーバーライドファイルを追加することを意味するため、少し誤解を招く可能性があります。ネットワークマネージャーで14.04にテストしましたが、以下は機能しませんでした

vim /etc/init/network-manager.override:
start
manual

しかし、これは働いた

vim /etc/init/network-manager.override:
#start
manual

そのため、IMO、initctlは最初のコメント化されていない行を探して実行します。たぶん私は間違っていますが、それらは私のテスト結果でした。入力は大歓迎です。

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