Systemd
簡介
Linux 的各項服務管理一直都是用 SysV Init Script,Systemd 是新的管理工具,在 CentOS 7 開始已經有支援。
設定上比 SysV Init 簡單許多,指令的操作差異不大。
線上教學:
- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Services.html#sect-Managing_Services_with_systemd-Services-List
支援的 Linux:
- CentOS 7+
- Ubuntu 16.04+
其他類似應用:
- Supervisor
這個被使用在 Ubuntu 9.10,Mac OS X (10.4/10.5/10.6),Solaris (10 for Intel) 及 FreeBSD 6.1。系統環境需要有 Python 2.4,但不支援 Python 3。
相關目錄:
- /etc/systemd/system 客製的服務啟動檔位置
- /lib/systemd/system 內建系統的服務啟動檔位置
服務設定檔
/etc/systemd/system/backup.service
[Unit]
Description=Backup daemon
[Service]
Type=simple
ExecStart=/path/to/backup
[Install]
WantedBy=multi-user.target
TIP:
multi-user.target 這是表示 Run Level 3
更多資訊可以前往 http://0pointer.de/blog/projects/systemd-for-admins-3.html
新增一個服務設定檔
/etc/systemd/system/freepbx.service
[Unit]
Description=Freepbx
After=mariadb.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start
ExecStop=/usr/sbin/fwconsole stop
[Install]
WantedBy=multi-user.target
將服務設為自動啟用
systemctl enable freepbx
服務管理
啟動服務
# Reload Systemd
systemctl daemon-reload
# 啟動服務
systemctl start <service-name>
# 檢查服務狀態
systemctl status <service-name>
systemctl is-active <service-name>
systemctl is-enabled <service-name>
# 關閉服務
systemctl stop <service-name>
# 啟用:自動啟動
systemctl enable <service-name>
# 關閉:自動啟動
systemctl disable <service-name>
# 列出設為自動啟用的服務
systemctl list-unit-files --type=service --state=enabled
關機與開機
# Halt the system
systemctl halt
# Poeroff the system
systemctl poweroff
# Reboot the system
systemctl reboot
其他附屬指令
coredumpctl
# 列出系統所有 core dump
coredumpctl
# 列出指定 program 的 core dump
coredumpctl dump <program-name>
# 列出指定 PID
coredumpctl dump _PID=XXX
# 分析特定 core dump 的內容
coredumpctl gdb <PID>
# 預設 core dump files 路徑
/var/lib/systemd/coredump