查看当前系统设定的服务启动脚本的类型:ls /usr/lib/systemd/system | cut -d '.' -f 2 | sort | uniq
1. /usr/lib/systemd/system ==> 每个服务最主要的启动脚本设定
2. /run/systemd/system ==> 系统过程中所产生的服务脚本
3. /etc/systemd/system ==> 该目录下都是soft link文件,软链接到/usr/lib/systemd/system目录下的启动脚本,因此该目录决定了开机启动后开启哪些服务
优先级顺序:3 > 2 > 1
副檔名 | 主要服務功能 |
.service | 一般服務類型 (service unit):主要是系統服務,包括伺服器本身所需要的本機服務以及網路服務都是!比較經常被使用到的服務大多是這種類型! 所以,這也是最常見的類型了! |
.socket | 內部程序資料交換的插槽服務 (socket unit):主要是 IPC (Inter-process communication) 的傳輸訊息插槽檔 (socket file) 功能。 這種類型的服務通常在監控訊息傳遞的插槽檔,當有透過此插槽檔傳遞訊息來說要連結服務時,就依據當時的狀態將該用戶的要求傳送到對應的 daemon, 若 daemon 尚未啟動,則啟動該 daemon 後再傳送用戶的要求。 使用 socket 類型的服務一般是比較不會被用到的服務,因此在開機時通常會稍微延遲啟動的時間 (因為比較沒有這麼常用嘛!)。一般用於本機服務比較多,例如我們的圖形界面很多的軟體都是透過 socket 來進行本機程序資料交換的行為。 (這與早期的 xinetd 這個 super daemon 有部份的相似喔!) |
.target | 執行環境類型 (target unit):其實是一群 unit 的集合,例如上面表格中談到的 multi-user.target 其實就是一堆服務的集合~也就是說, 選擇執行 multi-user.target 就是執行一堆其他 .service 或/及 .socket 之類的服務就是了! |
.mount .automount | 檔案系統掛載相關的服務 (automount unit / mount unit):例如來自網路的自動掛載、NFS 檔案系統掛載等與檔案系統相關性較高的程序管理。 |
.path | 偵測特定檔案或目錄類型 (path unit):某些服務需要偵測某些特定的目錄來提供佇列服務,例如最常見的列印服務,就是透過偵測列印佇列目錄來啟動列印功能! 這時就得要 .path 的服務類型支援了! |
.timer | 循環執行的服務 (timer unit):這個東西有點類似 anacrontab 喔!不過是由 systemd 主動提供的,比 anacrontab 更加有彈性! |
(-- 源自鸟哥的Linux私房菜: systemd使用unit分类)
直接列出所有unit与其状态和描述
服务是有相依赖性的,比如cups.service负责打印机服务,但若直接systemctl stop cups.service,虽然它确实停止了,但是仍能被cups.path和cups.socket唤醒,例子如下:
给予了提示,若停止cups.service,该service仍能被cups.path、cups.socket激活
可以通过systemctl list-units xxx --all 的方式来显示出所有与之相关的unit,加上--all参数后会显示所有的unit包含unloaded的
systemctl list-units --type={service|socket|path|...} -all 列出所有unit类型为{service|socket|path|...}的服务详细状态
谨记:
/usr/lib/systemd/system/: 使用centos官方提供的软件安装后,预设的启动脚本设定文件都放在这里
/run/systemd/system/: 系统执行过程中所产生的服务脚本,优先级比/usr/lib/systemd/sytem/高
/etc/systemd/system/: 管理员依据主机系统的需求所建立的执行脚本,优先级比/run/systemd/system/高
/etc/sysconfig/*: 几乎所有的服务都会将初始化的一些选项设定写入到这个目录下
/var/lib/: 一些会产生资料的服务都会将他的资料写入到/var/lib/目录下
/run/: 放置了很多daemon的暂存文件,包括lock file以及PID file等等