淺談linux6:以systemd為例,初探系統服務管理
假如你用的不是很老版本的unix系統,那麼你一定對systemd不甚陌生。
檢視服務:systemctl status servicename
停止服務:systemctl stop servicename
這些常見操作,基本大家都有涉及。
那麼,systemd到底是何方神聖呢?為什麼它可以管理那麼多的系統服務?它本身也是個服務麼?需要安裝麼?為什麼在開篇要提到版本差異?
systemd是linux下的一款init軟體,開發目標是提供更優秀的框架以表示系統服務間的依賴關係,並依此實現系統初始化時服務的並行啟動,同時達到降低shell的系統開銷的效果,最終墊底現在常用的system V與BSO風格的init程式。
這段話當然是我從百度百科抄下來的啦……
然後接著……什麼是init軟體?
init是linux不可或缺的一個程式,由核心啟動,用來對服務和應用程式進行初始化。
所以,現在,很多問題就迎刃而解了。
核心啟動systemd,systemd用來管理服務和應用。
當然也有更低版本的init程式,比如sysvinit。
附上小小的對比圖:
一些常用命令:
systemctl list-units ##列出當前系統服務的狀態
systemctl list-unit-files ##列出服務的開機狀態
systemctl status sshd ##檢視指定服務的狀態
systemctl stop sshd
systemctl start sshd ##開啟指定服務
systemctl restart sshd ##從新啟動服務
systemctl enable sshd ##設定指定服務開機開啟
systemctl disable sshd ##設定指定服務開機關閉
systemctl reload sshd ##使指定服務從新載入配置
systemctl list-dependencies sshd ##檢視指定服務的倚賴關係
systemctl mask sshd ##凍結指定服務
systemctl unmask sshd ##啟用服務
systemctl set-default multi-user.target
systemctl set-default graphical.target ##開機啟動圖形
服務狀態:
systemctl status 服務名稱
loaded ##系統服務已經初始化完成,載入過配置
active(running) ##正有一個或多個程式正在系統中執行,
# vsftpd 就是這種模式
atcive(exited) ##僅執行一次就正常結束的服務,
# 目前並沒有任何程式在系統中執行
atcive(waiting) ##正在執行當中,
# 不過還再等待其他的事件才能繼續處理
inactive ##服務關閉
enbaled ##服務開機啟動
disabled ##服務開機不自啟
static ##服務開機啟動項不可被管理
failed ##系統配置錯誤