web-dev-qa-db-ja.com

サービスを有効または無効にする方法

Ubuntuでサービスを有効または無効にする方法について読んだところ、サービスを管理するさまざまな可能性があるようです。

最初に見つけた方法は、update-rc.dフォルダーとそのコンテンツを対象とする新しいサービスをスタートアップに追加する/etc/init.dです。

私が見つけたもう1つの方法は、.confフォルダー内の/etc/initファイルを編集することです。

サービスを有効化/無効化/追加するための推奨される方法とその理由は何ですか?

Ubuntuにサービスを追加し、有効化および無効化する方法について、手順を追って短い防弾の例を挙げてください。

816
NES

GUI(startupアプリケーションなど)または端末を使用して有効/無効にできるサービスがあります。

ターミナルには、いくつかのオプションがあります。最初に、ターミナルを開きます(たとえば、ダッシュで「terminal」と入力して開きます)。次に:

一時的な有効化/無効化サービス

サービスを一時停止および開始するには一時的に(今後のブートでサービスを有効/無効にしない)、service SERVICE_NAMEと入力できます。例えば:

  • Sudo service Apache2 stop(Will STOP再起動するまで、または再起動するまでApacheサービス)。

  • Sudo service Apache2 start(Will START以前に停止されたと仮定したApacheサービス。).

  • service Apache2 status(サービスが有効/実行中/無効/実行中でない場合、サービスのステータスが表示されます。).

  • Sudo service Apache2 restart(Will RESTARTサービス。これは、設定ファイルを変更したときに最もよく使用されます。この場合、PHP設定またはApache設定。再起動により、2つのコマンドラインで停止/起動する必要がなくなります。

  • service Apache2(この場合、サービスに対して実行するACTIONについて言及しなかったため、その特定のサービスで使用可能なすべてのオプションが表示されます。)この側面は、たとえばMySQLの場合、サービスによって異なりますパラメータが欠落していることだけに言及します。ネットワークサービスのような他のサービスについては、利用可能なすべてのオプションの小さなリストに言及します。


システム化

Ubuntu 15.04以降、Upstartは非推奨となり、Systemdが採用されます。 Systemdを使用してサービスを管理すると、次のことができます。

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

systemctl stop SERVICE-これを使用してサービスを停止します。再起動後も持続しません

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

systemctl reload SERVICE-サービスがサポートしている場合、サービスを使用しているプロセスを中断することなく、関連する構成ファイルを再ロードします。

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

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

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

systemctl is-enabled SERVICE-サービスが現在、次の再起動時に開始するように設定されているかどうかを確認します。

systemctl is-active SERVICE-サービスが現在アクティブかどうかを確認します。

systemctl show SERVICE-サービスに関するすべての情報を表示します。

Sudo systemctl mask SERVICE-/dev/nullにリンクすることにより、サービスを完全に無効にします。サービスを手動で開始したり、サービスを有効にしたりすることはできません。

Sudo systemctl unmask SERVICE-/dev/nullへのリンクを削除し、サービスを有効化または手動で開始する機能を復元します。


UPSTART(15.04から非推奨)

公式のUpstartの方法を使用する場合(現時点では、すべてのサービスがUpstartに変換されているわけではないことに注意してください)、次のコマンドを使用できます。

status SERVICE-これは、変換されたサービスが実行されているかどうかを示します。これはstartstopstatusrestartを優先して廃止されることに注意してください。また、サービスがまだupstartに変換されていないかどうかもわかります。

変換されたサービスは通常、現在のステータス(開始中、実行中、停止中...)およびプロセスIDを出力します。変換されていないサービスは、不明なジョブに関するエラーを返します。

一部のショートカットは、上記のserviceコマンドでのみ機能しますが、upstartサービスに100%変換されない限り、以下のコマンドでは機能しません。

  • START-Sudo start mysql

  • STOP-Sudo stop mysql

  • RESTART-Sudo restart mysql

  • STATUS-Sudo status smbd

サービスの有効化/無効化

サービスを永続的に開始または停止するかどうかを切り替えるには、次のことを行う必要があります。

echo manual | Sudo tee /etc/init/SERVICE.override

スタンザmanualは、Upstartが次回ブート時にサービスを自動的にロードするのを停止します。 .overrideで終わるサービスは、元のサービスファイルよりも優先されます。その後は、手動でのみサービスを開始できます。これが必要ない場合は、.overrideを削除してください。例えば:

echo manual | Sudo tee /etc/init/mysql.override

MySQLサービスをmanualモードにします。これが必要ない場合は、後で行うことができます

Sudo rm /etc/init/mysql.override

サービスを再起動して、自動的に再起動します。もちろん、サービスを有効にするための最も一般的な方法は、インストールすることです。 Apache、Nginx、MySQLなどをインストールすると、インストールが完了すると自動的に起動し、コンピューターが起動するたびに起動します。前述のように無効にすると、サービスmanualが使用されます。

823
Luis Alvarado

現在、Ubuntuでサービスとしてソフトウェアを開始するには、実際には3つの異なる方法があります。SysVUpstartおよびsystemd。ここでサービスは、ユーザーが直接起動して実行するサービスとは対照的に、バックグラウンドでシステムによって実行されるプログラムとして定義されます。

SysV

Linuxでサービスを開始する従来の方法は、スクリプトを/etc/init.dに配置し、update-rc.dコマンド(またはRedHatベースのディストリビューションchkconfig)を使用して有効または無効にすることでした。

このコマンドは、やや複雑なロジックを使用して、/etc/rc#.dにシンボリックリンクを作成します。これは、サービスの開始順序を制御します。 ls /etc/rc2.dを実行すると、K##xxxxなどのファイル名でサービスが強制終了され、ファイル名S##xxxxで開始される順序を確認できます。 ##S##xxxxは、サービスxxxxの「開始順序」を意味します。逆に、##K##xxxxは、サービスxxxxの強制終了順序を意味します。

SysVの1つの大きな問題は、システムの起動時に すべてを順番に行う必要があり、次々にシステムの起動時間が非常に遅くなる 。これを並列化する試みが行われましたが、それらは無計画であり、十分に活用するのが困難でした。これが、Upstartが作成された主な理由でした。

新興企業

Upstartは、/etc/initのジョブ定義ファイルを使用して、サービスを開始するイベントを定義します。そのため、システムの起動中に、upstartはさまざまなイベントを処理し、複数のサービスを並行して開始できます。これにより、たとえば、別のCPUバインドサービスの実行中、またはネットワークが動的IPアドレスの割り当てを待機している間にディスクバインドサービスを開始することにより、システムのリソースを完全に活用できます。

ls /etc/init/*.confを実行すると、すべてのupstartジョブファイルを表示できます。

ここで停止して、サービスとは何か、またはサービスが何であるかわからない場合は、無効にしないでください。

すべてのサービスがupstartに変換されているわけではありません。過去数か月にわたってCanonicalのサーバーチームで働いていたとき、私は多くの変換されたジョブファイルに取り組んできました。最も良い部分は、すべてのスクリプト「魔法」を取り除き、サービスを開始する方法を正確に定義するためのコマンドはあちこちにあり、それ以上はありません。ただし、現時点では、squidsambaなどの少数の従来のネットワークサービスのみが変換されています。

サービスは新興企業ベースですか?

サービスがupstartベースかどうかを判断するには、statusコマンドを実行できます。

status servicename

upstartジョブの場合、次のように表示されます。

$ status statd
statd start/running, process 942

しかし、そうでない場合は、次のようなものが表示されます。

$ status Apache2
status: Unknown job: Apache2

この場合、Apache2upstartに変換されていません。したがって、Apache2を無効にするには、実行するだけです

Sudo update-rc.d Apache2 disable
Sudo service Apache2 stop

Upstartでサービス(ジョブ)を無効にする

Upstartジョブ定義にはupdate-rc.dコマンドがありません。ジョブを無効にするには、ジョブファイルを直接編集して無効にする必要があります。これを行うには2つの方法があります。

それでも手動で開始できるようにするには、start on条件をコメント化する必要があります。 sambaをインストールしたいが、自動的に起動したくないとします。これがジョブファイルです(natty内):

description "SMB/CIFS File Server"
author      "Steve Langasek <[email protected]>"

start on local-filesystems
stop on runlevel [!2345]

respawn

pre-start script
    RUN_MODE="daemons"

    [ -r /etc/default/samba ] && . /etc/default/samba

    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }

    install -o root -g root -m 755 -d /var/run/samba
end script

exec smbd -F

sambaを無効にするには、「#」の前にstart on local-filesystemsを置くだけです。起動時にバックアップは開始されませんが、今回はそれを停止する必要があることに注意してください

Sudo service smbd stop

ただし、sambaを起動したくない場合は、実際にパッケージを削除することをお勧めします。ただし、インストールしたいが起動できない場合は、次のこともできます。

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Start/stopスタンザを使用してサービスを無効にします(11.04以降)

11.04のupstartのバージョンからは、start onおよびstop onスタンザを無効にする新しいキーワードがあります:manual。したがって、11.04の時点でサービスを無効にする別の方法は次のとおりです。

echo 'manual' | Sudo tee /etc/init/mysql.override

# command from root Shell
echo manual >> /etc/init/mysql.override

overrideキーワードを入力するだけで、ジョブ定義をまったく編集せずに、manualファイルを作成してサービスを無効にできます。

354
SpamapS

sysv-rc-conf

sysv-rc-confを使用してみてください

Sudo apt-get install sysv-rc-conf

サービスの管理を開始するには、実行します

Sudo sysv-rc-conf

このような対話型ウィンドウが表示されます

enter image description here

次のページにCtrl+nを、前のページにCtrl+pを使用して、ページをさらにナビゲートできます。目的のランレベルでSPACEを選択すると、サービスを有効または無効にできます。

ジョブ管理者

別の代替方法は、Jobs-Adminでインストールする

Sudo apt-get install jobs-admin

このようなGUIも提供します

jobs-admin preview

より多くのジョブを表示するには、メニューから保護されたジョブを表示にチェックマークを付ける必要があります。

chkconfig

3番目のオプションはchkconfigになります。

Sudo apt-get install chkconfig

CLI chkconfigを介して使用でき、オン/オフジョブのリストが表示されます。また、chkconfig –listを使用してシステムサービスを表示できます

を使用してサービスをオンにできます

chkconfig <service> on

を使用してサービスをオフにできます

chkconfig <service> off

また、適切な見出しを持つ適切なinitスクリプトを使用して、独自のサービスを追加することもできます。

chkconfig --add <service>

update-rc.d

また、別のオプションを参照することもできます ここではupdate-rc.d 、簡単に説明すると here

Ubuntu Server 12.04では、update-rc.dchkconfigの代わりに使用されます

129
atenz

SshでUbuntuを実行している私たちにとって、最も良いオプションはrcconf-テキストベースのプログラムです。

Sudo apt-get install rcconf
Sudo rcconf

alt text

タブと矢印キーで移動し、スペースバーを押して有効/無効にします。変更は再起動後も持続します。

このブログ投稿 から借用したスクリーンショット。sysv-rc-confも表示されます。これは、ランレベルを設定できる同様のツールです。 (ランレベルを変更することを望むのにランレベルを気にする人のために:)

残念ながら、rcconfはupstart(/etc/init/*にリストされているサービス)では機能せず、従来のメカニズム(ls -l /etc/init.d/*-シンボリックリンクではないもの)でのみ機能します。

幸いなことに、サーバーにSSHで接続するときに関連するサービス(Apache、Tomcat、mdadm、boinc-client ...)の多くは、まだupstartに移行されていません。

48
j-g-faustus

BUMのようなものの、Upstartと互換性のあるこのGUIツールがあることがわかりました。

  • ジョブ管理者

    Sudo apt-get install jobs-admin
    
18
Postadelmaga

(上記のように)既存のupstart構成ファイルを編集することは、あまり良い考えではありません。更新されたパッケージは更新された構成を提供する可能性があり、変更を何度も繰り返す必要がありました。

man 5 initを見ると、より適切な解決策が見つかります。オーバーライド構成を使用することです。短い例:「foobar」というサービスがあるとします。したがって、/etc/init/foobar.confというファイルがあり、そのスタートアップ構成があります。今、あなたはそのファイルを削除したり、変更したりしたくない-しかし、あなたはこのサービスを実行したくないのか?そのため、横にオーバーライドファイルを配置します:/etc/init/foobar.override、(オプションで説明付きのヘッダーと)代わりにstart on/stop on行を配置します1つのWordで:manual。この方法では、基本的にfoobar.confを使用するようにupstartに指示しますが、手動で実施される場合(この例ではservice foobar startを介して)のみそのサービスを開始するようにスタートアップ定義をオーバーライドします。

12
Izzy

Boot-Up Managerもあります。

インストールする:Sudo apt-get install bum

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

enter image description here

8
Sadi

Stacerを使用します。サービスとプロセスも表示されます。完全なGUIシステムツールボックス。 https://github.com/oguzhaninan/Stacer

2
HDK Bouma