通常,需要在我們的 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 命令