Debian 中的服務是如何工作的,我該如何管理它們?
在 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 有service
和chkconfig
,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種方式:
- 將有一個
/etc/default/{SERVICENAME}
包含一行的文件ENABLED=...
。將此行更改為ENABLED=1
.- 會有一個文件
/etc/init/{SERVICENAME}.override
。確保它包含start
(或完全不存在),而不是manual
.禁用服務:
echo manual > /etc/init/{SERVICENAME}.override
注意:Gentoo 還使用了“OpenRC”初始化系統。目前,Gentoo 是唯一使用它的發行版,它沒有被考慮使用,也不受任何其他發行版的支持。所以我沒有涵蓋它的用法(儘管如果我有意見,我可以添加它)。