隨著 Fedora 15 的發布,systemd 正式開始了替代 SysVinit 的步伐。通過本文的秘籍表,可助您輕松由 SysVinit 過渡到 systemd 。
該文檔目的在於幫助系統管理員了解 systemd 中可以取代原先 sysvinit 工作流程的命令。如果想要了解 systemd 的一般信息,參閱 systemd。
注意 ‘service’ 和 ‘chkconfig’ 命令在 systemd 環境下依然可用,該教程目的在於告訴您如何使用原生 systemctl 替代品。
sysvinit 命令 |
systemd 命令 |
備注 |
service frobozz start
systemctl start frobozz.service
用來啟動一個服務 (並不會重啟現有的)
service frobozz stop
systemctl stop frobozz.service
用來停止一個服務 (並不會重啟現有的)。
service frobozz restart
systemctl restart frobozz.service
用來停止並啟動一個服務。
service frobozz reload
systemctl reload frobozz.service
當支持時,重新裝載配置文件而不中斷等待操作。
service frobozz condrestart
systemctl condrestart frobozz.service
如果服務正在運行那麼重啟它。
service frobozz status
systemctl status frobozz.service
匯報服務是否正在運行。
ls /etc/rc.d/init.d/
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
用來列出可以啟動或停止的服務列表。
chkconfig frobozz on
systemctl enable frobozz.service
在下次啟動時或滿足其他觸發條件時設置服務為啟用
chkconfig frobozz off
systemctl disable frobozz.service
在下次啟動時或滿足其他觸發條件時設置服務為禁用
chkconfig frobozz
systemctl is-enabled frobozz.service
用來檢查一個服務在當前環境下被配置為啟用還是禁用。
chkconfig frobozz –list
ls /etc/systemd/system/*.wants/frobozz.service
用來列出該服務在哪些運行級別下啟用和禁用。
chkconfig frobozz –add
不需要,沒有等效命令。
注意以上列出的所有 /sbin/service 和 /sbin/chkconfig 在 systemd 環境下依然可以工作,並且在必要的情況下將會被翻譯成原生的等效命令。唯一的例外是 chkconfig –list。
額外的命令:
- 在 SysVinit,服務可以任意定義命令。例如 service iptables panic 或 service httpd graceful。原生 systemd 服務不具有此能力。
- 當編寫原生 systemd 服務配置時,任何以這種方式定義了額外命令的服務需要定義其他、特定於服務的方式來完成此項任務。
- 查閱軟件包自身的發布日志來了解可能進行類似操作的服務。
運行級別/目標:
Systemd 引入一個概念 目標,它的用途和運行級別類似,但是運行起來有一些不同。每一個目標使用名稱而不是數字命名的,服務於一個特定的目的。which serve a similar purpose as runlevels but act a little different. Each target is named instead of numbered and is intended to serve a specific purpose. 一些 目標 通過繼承另一個 目標 然後添加其他額外服務來實現。也有一些 systemd 目標 模仿通常的 sysvinit 運行級別,於是您依然可以通過熟悉的telinit RUNLEVEL
來切換 目標。在純淨 Fedora 系統上運行級別 0, 1, 3, 5, 和 6; 與特定的 目標 之間存在 1:1 的映射關系。遺憾的是,對於用戶自定義運行級別 2 和 4 沒法實現類似的轉換。如果您使用了這些運行級別,建議您用 /etc/systemd/system/$YOURTARGET
的方式創建一個新的 systemd 目標,並以一個已有的運行級別作為基礎 (您可以查看 /lib/systemd/system/graphical.target
作為例子),創建一個目錄 /etc/systemd/system/$YOURTARGET.wants
,然後符號鏈接您想要啟用的額外服務到該目錄下 (您符號鏈接的服務位於 /lib/systemd/system
)。
sysvinit 運行級別 |
systemd 目標 |
備注 |
0
runlevel0.target, poweroff.target
關閉系統。
1, s, single
runlevel1.target, rescue.target
單用戶模式。
2, 4
runlevel2.target, runlevel4.target, multi-user.target
用戶定義/域特定運行級別。默認等同於 3。
3
runlevel3.target, multi-user.target
多用戶,非圖形化。用戶可以通過多個控制台或網絡登錄。
5
runlevel5.target, graphical.target
多用戶,圖形化。通常為所有運行級別 3 的服務外加圖形化登錄。
6
runlevel6.target, reboot.target
重啟
emergency
emergency.target
緊急 Shell
改變運行級別:
sysvinit 命令 |
systemd 命令 |
備注 |
telinit 3
systemctl isolate multi-user.target (OR systemctl isolate runlevel3.target OR telinit 3)
改變至多用戶運行級別。
sed s/^id:.*:initdefault:/id:3:initdefault:/
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
設置在下一次啟動時使用多用戶運行級別。