Debian

Debian 中的服務是如何工作的,我該如何管理它們?

  • October 4, 2019

在 Windows 中,我有服務管理器,在那裡我可以看到所有可以通過 Windows 本身啟動的系統服務,我設置它使用的使用者,權限管理在那裡,我可以將變數和一些其他資訊傳遞給服務,我可以命名它們,我可以創建一個程序的重複服務等等。所以我在Windows中有一個主要的管理工具。

我怎樣才能在 Linux 中做同樣的事情?如何在啟動時觸發執行“svnserve”,或者如何將服務配置為在特殊上下文中執行。如何查看所有“已程式”服務?

linux 目前使用了 3 個主要的 init 系統。幾年前,只有一個,SysVinit。但是 SysVinit 嚴重缺乏服務依賴關係圖等功能,因此現在大多數發行版都已棄用它。目前大多數發行版正在切換到systemd。雖然也有暴發戶

但這是 3 個初始化系統中每一個的問題的答案:

 

系統初始化

SysVinit 目前由 Debian 和 RedHat 使用。儘管 RedHat (7) 的下一個版本將使用 systemd。

在啟動時啟用 SysVinit 服務的通用方法是將它們符號連結到/etc/rc3.d(或/etc/rc2.d)中。所有服務都可以在 中找到/etc/init.d。但請注意,發行版通常有自己的工具來管理這些文件,應該使用該工具。(Fedora/RedHat 有servicechkconfig,ubuntu 有update-rc.d

列出服務:

ls /etc/init.d/

啟動服務:

/etc/init.d/{SERVICENAME} start

或者

service {SERVICENAME} start

停止服務:

/etc/init.d/{SERVICENAME} stop

或者

service {SERVICENAME} stop

啟用服務:

cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}

S95用於指定順序。S01 將在 S02 之前開始,等等)

禁用服務:

rm /etc/rc3.d/*{SERVICENAME}

 

系統

最著名的使用 systemd 的發行版是 Fedora。雖然它被許多其他人使用。此外,由於 Debian 選擇了 systemd 而不是 upstart,它將成為大多數發行版事實上的 upstart 系統(ubuntu 已經宣布他們將放棄 systemd 的 upstart)。

列出服務:

systemctl list-unit-files

啟動服務:

systemctl start {SERVICENAME}

停止服務:

systemctl stop {SERVICENAME}

啟用服務:

systemctl enable {SERVICENAME}

禁用服務:

systemctl disable {SERVICENAME}

 

暴發戶

Upstart 是由 Ubuntu 開發的。但是在 debian決定使用 systemd之後,Ubuntu宣布他們將放棄 upstart

RedHat 也曾短暫使用過 Upstart,因為它存在於 RHEL-6 中,但並不常用。

列出服務:

initctl list

啟動服務:

initctl start {SERVICENAME}

停止服務:

initctl stop {SERVICENAME}

啟用服務:

不幸的是2種方式:

  1. 將有一個/etc/default/{SERVICENAME}包含一行的文件ENABLED=...。將此行更改為ENABLED=1.
  2. 會有一個文件/etc/init/{SERVICENAME}.override。確保它包含start(或完全不存在),而不是manual.

禁用服務:

echo manual > /etc/init/{SERVICENAME}.override

注意:Gentoo 還使用了“OpenRC”初始化系統。目前,Gentoo 是唯一使用它的發行版,它沒有被考慮使用,也不受任何其他發行版的支持。所以我沒有涵蓋它的用法(儘管如果我有意見,我可以添加它)。

引用自:https://unix.stackexchange.com/questions/106656