Linuxサービスが自動起動しないようにするにはどうすればよいですか?


9

最近、WindowsからLinux(xubuntu)に移行しました

私は開発者であり、必要なものすべてをインストールしています。LAMP。Windowsでは、以前はすべての不要なサービスをオフにしていました。ApacheまたはMySQLサービスを常に実行する必要はありません。MySQLが必要なときはいつでも使用していました。

net start mysql

Linuxで同じことを行うにはどうすればよいですか?

  1. 不要なデーモンの自動起動を無効にしますか?
  2. 必要なときにだけ起動しますか?

3
使用しているubuntuの正確なバージョンを含める必要があると思います。新しいubuntuバージョンは、独自の落とし穴があるupstartを使用します。
vtest

編集:私はXubuntu最新バージョン10.04を使用していますが、idはターミナルからのみ、このためにGUIを使用したくありません。@prhqは彼の答えに何かを得たようです。新興企業とは何ですか?
アビブ

Server FaultまたはUnixのいずれかに属します。それでも便利です。
ripper234

回答:


10

ほとんどのLinuxディストリビューションでは、次のコマンドを実行することで(rootまたはsudoを使用して)サービスを手動で開始/停止できます。

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

自動的に開始されるサービスは、/etc/rc[runlevel].d/のファイルリンクによって制御されます。コマンド「runlevel」をルートとして使用して、現在のランレベルを見つけます

# runlevel
N 2

これはランレベル2を示しています。これで、開始したくない/etc/rc2.d/内のファイルを削除するだけです。

デスクトップ上のapacheとMysqlを削除することは通常は問題ありませんが、他のサービスを削除することに注意してください。


3
「ほとんどのディストリビューション」と言っても、これはかなり誤解を招く恐れがあります。あなたのレシピをディストリビューション固有のものとみなします。
vtest

どちらを念頭に置いていましたか?私はArchLinuxについてしか考えることができません(しかし、それらのユーザーは自分が何をしているかをすでに知っているはずです)。もちろん、いくつかのディストリビューションには特定のツールがありますが、上記の手法は同様に機能します。
hultqvist

非常に奇妙なことに、/ etc / rc2.dディレクトリにS91apache2というファイルがあります。apache2が起動すると思いますが、MySQLに関するファイルが見つかりません。この自動起動デーモンについてどこで学習できますか?
アビブ

その場合、mysqlサーバーが自動起動用に構成されていない可能性があります。このサイトは良い説明があるように見えます:yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist

* BSDおよびSlackwareツリーの下では、ディレクトリはであることに注意してください/etc/rc.d/
new123456

6

Ubuntu 10.04は、SysVinit(ほとんどのLinuxディストリビューションで使用されている従来のシステム)とUpstart(Ubuntuによってプッシュされ、ますます多くのディストリビューションで利用可能になった新しいシステム)の2つのサービス管理システム間の移行の途中にあります。

SysVinitサービス管理スクリプトはにあり/etc/init.dます。でサービスを開始/etc/init.d/SERVICENAME startおよび停止でき/etc/init.d/SERVICENAME stopます。サービスがブート時に自動的に起動されているかどうかでシンボリックリンクの存在に依存する/etc/rc?.dところ?からの数字である25ランレベル)。ブート時にサービスが自動的に開始しないようにする最も簡単な方法は、を使用することupdate-rc.d SERVICENAME disableです。

Upstartサービス管理構成ファイルはにあり/etc/initます。でサービスを開始start SERVICENAMEおよび停止できstop SERVICENAMEます。構成ファイルに/etc/init/SERVICENAME.confは、サービスをいつ開始するかを示す行が含まれていますstart on …。これらのサービスを無効にする簡単な方法は、その行をに変更することstart on never and (…)です。ファイルを編集したくない場合は、パッケージシステムを混乱させずに、名前をで終わらないように変更して、サービスを完全に無効にすることもできます.conf

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

Ubuntu 10.04の時点で、ApacheにはSysVinitスクリプトが付属し、MysqlにはUpstartスクリプトが付属しています。


servicename.confの編集は本当に好ましい方法ですか?特に更新が理論的にそれらの構成ファイルを更新し、変更を上書きできる場合
Masse

@Masse:常に好ましい方法ではありませんが、常に機能するという利点があります。一部のサービスでは、ファイルを読み込む/etc/defaultと、持っているSTART_FOOあなたはオフにすることができていることがあるオプションを、多くは、彼らがインストールされている場合に実行することを期待します。更新は、すべてconffileであるため、プロンプトなしで変更を上書きしません。
ジル

ワオ。これは、大きな後退のようです。
マッセ

@Masse:Conffilesは管理者が編集するためのものです。ただし、そうしたくない場合は、を使用dpkg-divertしてサービスファイルの名前を変更することもできます。ただし、その場合、明示的にサービスを開始することはできません。
ジル

6

systemd(15.04以降)を使用するUbuntuバージョンの場合:

systemctl disable service

これは仕事をします。サービスを無効にし、再起動後に再起動しません。一時的に有効にするには、単にサービスを開始します。有効にしません。

サービス名を見つけるには

service --status-all

その他のコマンドは次のとおりです。

systemctl start service-それを使用してサービスを開始します。再起動後も持続しません

systemctl stop service-サービスを停止するために使用します。再起動後も持続しません

systemctl restart service -それを使用してサービスを再起動します

systemctl status service-サービスのステータスを表示します。サービスが現在実行中かどうかを示します。

systemctl enable service-次の再起動時または次の開始イベントでサービスをオンにします。再起動後も持続します。

systemctl disable service-次の再起動または次の停止イベントでサービスをオフにします。再起動後も持続します。


1
それは残念です、受け入れられた答えではありません:)。ありがとう、私はそのコマンドを完全に忘れていました。
ノルデス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.