多くの場合、Ubuntuシステムでサービスを一時的または永続的に有効または無効にする必要があります。場合によっては、起動時にsshやWebサーバーなどの特定のサービスを自動的に起動する必要がある場合もあれば、不要になりCPUとRAMを占有しているサービスを無効にする必要がある場合もあります。
このチュートリアルでは、Ubuntuでサービスを有効または無効にする方法を見ていきます。これを行うには、Ubuntuには3つの主要なinitシステムがあることを最初に理解する必要があります
- Systemd
- 起動
- SysV
各initシステムには、サービスを開始および停止する方法が異なります。これらのそれぞれを見ていきます。
Systemdinitでサービスを有効または無効にする方法
systemdでサービスを開始するには 次のようにコマンドを実行します:
systemctl start service-name
たとえば、Apache Webサービスを開始するには、
を実行します。systemctl start apache2
サービスが実行されていることを確認するには、
を実行しますsystemctl status apache2
出力
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2018-03-15 17:09:05 UTC; 35s ago
Docs: man:systemd-sysv-generator(8)
CGroup: /system.slice/apache2.service
├─2499 /usr/sbin/apache2 -k start
├─2502 /usr/sbin/apache2 -k start
└─2503 /usr/sbin/apache2 -k start
Mar 15 17:09:04 ip-172-31-41-251 systemd[1]: Starting LSB: Apache2 web server...
Mar 15 17:09:04 ip-172-31-41-251 apache2[2475]: * Starting Apache httpd web ser
Mar 15 17:09:05 ip-172-31-41-251 apache2[2475]: *
Mar 15 17:09:05 ip-172-31-41-251 systemd[1]: Started LSB: Apache2 web server.
サービスを停止するには 実行中のサービス
systemctl stop apache2
サービスが実行されていないことを確認するには、実行します
systemctl status apache2
出力
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: inactive (dead) since Thu 2018-03-15 17:19:47 UTC; 12s ago
Docs: man:systemd-sysv-generator(8)
Process: 2822 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS
Process: 2687 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCE
Mar 15 17:10:11 ip-172-31-41-251 systemd[1]: Starting LSB: Apache2 web server...
Mar 15 17:10:11 ip-172-31-41-251 apache2[2687]: * Starting Apache httpd web ser
Mar 15 17:10:12 ip-172-31-41-251 apache2[2687]: *
Mar 15 17:10:12 ip-172-31-41-251 systemd[1]: Started LSB: Apache2 web server.
Mar 15 17:19:46 ip-172-31-41-251 systemd[1]: Stopping LSB: Apache2 web server...
Mar 15 17:19:46 ip-172-31-41-251 apache2[2822]: * Stopping Apache httpd web ser
Mar 15 17:19:47 ip-172-31-41-251 apache2[2822]: *
Mar 15 17:19:47 ip-172-31-41-251 systemd[1]: Stopped LSB: Apache2 web server.
起動時にapache2サービスを有効にするには
systemctl enable apache2
起動時にapache2サービスを無効にするには
systemctl disable apache2
サービスを再開するには
systemctl restart apache2
サービスが現在、次回の起動時に開始するように構成されているかどうかを確認するには
systemctl is-enabled apache2
出力
Executing /lib/systemd/systemd-sysv-install is-enabled apache2
enabled
サービスがアクティブかどうかを確認するには
systemctl is-active apache2
出力
active
Systemdサービスを完全に削除する方法
パッケージをインストールし、後でそれが不要になったと判断した場合はどうなりますか。どうやって完全に削除しますか?以下のコマンドに従ってください。
まず、サービスを停止します
systemctl stop service-name
次に、サービスを無効にします
systemctl disable service-name
systemdでのサービスの削除
rm /etc/systemd/system/service-name
rm /etc/systemd/system/service-name/[related symlinks]
systemdをリロード
systemctl daemon-reload
最後に実行します
systemctl reset-failed
Upstartinitでサービスを有効または無効にする方法
upstartinitシステムはsystemdの直前に発表されました。Ubuntu9.10からUbuntu14.10で使用されていました。その後、Ubuntu15.04以降のバージョンでsystemdinitの舗装方法が段階的に廃止されました。この例では、Ubuntu 14.04でサービスを開始および停止し、有効化および無効化する方法を見てみましょう。
Upstartは、サービスを制御するために構成ファイルを利用します。これらのファイルは、/ etc/initディレクトリに保持されます。これらのファイルは、スタンザに編成されたプレーンテキストのセクションで構成されており、各スタンザはサービスとその機能を説明しています。
サービスが実行されているかどうかを確認するには 以下のコマンドを実行します
initctl status service-name
または
service service-name status
または
status service-name
この例では、Linuxプリントサーバーであるcupsのステータスを確認します。
initctl status cups
または
service cups status
または
status cups
出力
cups start/running, process 3029
サービスを停止するには以下のコマンドを実行します
initctl stop cups
または
service cups stop
または
stop cups
出力
cups stop/waiting
Upstartinitでサービスを有効にするには
/etc/init/*.confファイルには、「 respawn」があります。 "予期せずクラッシュした場合、またはシステムが再起動した場合にサービスをジャンプスタートするディレクティブ。通常はデフォルトで有効になっています。
たとえば、以下の/etc/init/cups.confファイル

最初の引数(3)は再起動を試行する試行回数であり、2番目の引数(12)は再試行間の時間間隔です。自動再起動に失敗した場合。停止状態に保たれます。
upstartinitでサービスを無効にするには
以下のコマンドを実行します
echo manual >> /etc/init/service.override
これにより、ジョブ定義をまったく変更せずにサービスを無効にするオーバーライドファイルが作成されます。
カップサービスの場合、コマンドは
echo manual >> /etc/init/cups.override
システムを再起動すると、カップは停止状態になります。サービスを再度有効にする場合は、/ etc / init/cups.overrideファイルを削除する必要があります。
Sysv-rc-confツール
これはテキストベースのコンソールであり、開始がスケジュールされているさまざまなサービスとランレベルの概要を示します。次のコマンドを使用してインストールできます
apt-get install sysv-rc-conf
ツールを実行するには、
を実行しますsysv-rc-conf

ジョブ-管理ツール
これは、GUI環境でサービスとプロセスを制御できるようにするもう1つの機能です。を実行してこれをインストールできます。
apt-get install jobs-admin

SysVinitでサービスを有効または無効にする方法
SysVinitrunでサービスを有効にするには
update-rc.d enable service-name
たとえば、Apache Webサーバーを有効にする場合は、
を実行します。update-rc.d enable apache2
サービスを無効にするには、
を実行しますupdate-rc.d disable service-name
例
update-rc.d disable apache2
ほぼすべてのLinuxシステムは、Ubuntu、Debian、RHEL、およびCentOSのSystemdinitで実行されます。したがって、サービスを開始、停止、有効化、および無効化するために、より多くのsystemctlコマンドを使用することに気付くでしょう。この記事に示されているコマンドを試してみることを歓迎します。ありがとうございます。
関連項目:
- LinuxでSystemdサービスを管理するためのSystemctlコマンド