如何在 Ubuntu Systemd/Upstart 中啟用或禁用服務

通常,需要在我們的 Ubuntu 系統上臨時或永久啟用或禁用服務。 有時,我們可能需要某些服務在啟動時自動啟動,例如 ssh 或 web 服務器,有時我們可能需要禁用不再需要的服務,並佔用 CPU 和 RAM。

在本教程中,我們將了解如何在 Ubuntu 上啟用和禁用服務。 為此,我們必須首先了解 Ubuntu 有 3 個主要的 init 系統

  • 系統化
  • 暴發戶
  • 系統V

每個 init 系統都有不同的啟動和停止服務的方式。 我們將一一看一看。

如何在 Systemd init 中啟用和禁用服務

在 systemd 中啟動服務 運行命令,如圖:

systemctl start service-name

為了 example, 要啟動 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

如果您安裝了一個軟件包,然後決定不再需要它,該怎麼辦。 你如何徹底刪除它? 請按照以下命令進行操作。

一、停止服務

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

如何在 Upstart init 中啟用和禁用服務

Upstart init 系統是在 systemd 之前推出的,它用於 Ubuntu 9.10 到 Ubuntu 14.10。 後來它被逐步淘汰,為 Ubuntu 15.04 和更新版本中的 systemd init 鋪平了道路。 在這 example,讓我們看看如何在 Ubuntu 14.04 中啟動和停止、啟用和禁用服務。

Upstart 使用配置文件來控制服務。 這些文件保存在 /etc/init 目錄下。 這些文件由按節組織的純文本部分組成,每個節描述一個服務及其工作方式。

檢查服務是否正在運行 運行下面的命令

initctl status service-name

或者

service service-name status

或者

status service-name

在這 example,我們將檢查cups(一個Linux 打印服務器)的狀態。

 initctl status cups

或者

service cups status

或者

status cups

輸出

cups start/running, process 3029

停止服務 運行下面的命令

initctl stop cups

或者

service cups stop

或者

stop cups

輸出

cups stop/waiting

在 Upstart init 中啟用服務

在 /etc/init/*.conf 文件中,您會找到“respawn”指令,它會在服務意外崩潰或系統重新啟動時啟動該服務。 它通常默認啟用。

為了 example , 在下面的 /etc/init/cups.conf 文件中,

第一個參數 (3) 是它將嘗試重新啟動的嘗試次數,第二個參數 (12) 是重試之間的時間間隔。 如果自動重啟失敗。 它將保持在停止狀態。

在 upstart init 中禁用服務

運行下面的命令

echo manual >> /etc/init/service.override

這將創建一個覆蓋文件,該文件在根本不更改作業定義的情況下禁用服務。
對於杯子服務,命令將是

echo manual >> /etc/init/cups.override

系統重新啟動後,cups 將處於停止狀態。 如果您希望重新啟用該服務,您必須刪除 /etc/init/cups.override 文件。

sysv-rc-conf 工具

這是一個基於文本的控制台,可讓您大致了解它們計劃啟動的不同服務和運行級別。 可以使用以下命令安裝

apt-get install sysv-rc-conf

要執行該工具,請運行

sysv-rc-conf

作業管理工具

這是允許您在 GUI 環境中控制服務和進程的另一個功能。 您可以通過運行來安裝它。

apt-get install jobs-admin

如何在 SysV init 中啟用和禁用服務

在 SysV init run 中啟用服務

update-rc.d enable service-name

例如,如果你想啟用 apache web 服務器,你會運行

update-rc.d enable apache2

要禁用服務,請運行

update-rc.d disable service-name

為了 example

update-rc.d disable apache2

幾乎所有 Linux 系統都在 Systemd init 上運行,來自 Ubuntu、Debian、RHEL 和 CentOS。 因此,您會發現將更多地使用 systemctl 命令來啟動、停止、啟用和禁用服務。 我們歡迎您試用本文中顯示的命令。 謝謝你。

另請閱讀:

  • 在 Linux 中管理 Systemd 服務的 Systemctl 命令