個人表達一點看法。
其實基本上 systemd 好壞各有定論,若要在這邊討論基本上當然很正常,
只是原帖只是提供國外的網址內容說裡面有許多抱怨的聲音說他不好,
那我想問的是原帖自己有沒有用過 systemd 呢?有的話又是多久時間了,
能夠表達一下自己的心得想法,而不是這邊起個火然後大家來發表高見。
systemd 包含太多議題,個人以 init script 個項目表達他的一些優點
1. daemon 服務啟動後要把服務停止結束,使用 /etc/init.d/name stop
方式其實無法確保整個 process 都結束,很有機會程式本身 fork
出去或者是執行外部程式這類動作都無法在所謂 stop 這個參數之後
正確都被關閉。
systemd 本身整合 cgroup,整合運作資源功能先不談,其實在 systemd
架構內透過 cgroup 執行的程序都可以被追蹤到,執行的程式與資源都
能夠被正確結束。
2. 各家的 /etc/init.d 目錄內 init script 都沒有一個標準,大家都有
自己 function 有自己的語法實作,所以常寫了 init script 可能只有
適合 rh-based 的系統,換成 debian or suse 就無法正常工作。
若使用 systemd 的話就可以依據他的標準設定檔案就有個規範,就算是
有需要調整地方也不多,可攜性比較高。
另外 systemd 內可以 override 某個 service unit 設定,原本的
service unit 檔案可以不用異動就拉出額外的設定,以往要改就是動
原本檔案內容
3. init script 要指定優先順序甚至相依性單純化,以往還要去檢查自家
linux 版本相關服務的啟動順序數字來當作撰寫 script 時候帶給
chkconfig 這類工具使用的啟動與結束的優先數字。其中建立必要 rc?.d
相關 script 檔案會產生必要數字決定啟動與結束順序...
在 systemd unit 檔案內只有註明相依,與包含需要在哪些服務啟動
之前還是之後,systemd 就自動協助處理,這不用仰賴上面提到數字優先性
4. 服務的 unit 檔案內可以很簡單指定自己的啟動模式,是開機跑一次還是
成為持續運作的服務,若程式結束了要不要每隔多久自己就重新啟動,
其中也包含重試啟動的次數等。
透過 systemd 工具就可以自己服務啟動的狀態。在傳統架構內要監視該
服務是很麻煩的,要看狀態也只能夠自己查看 log 來判斷...
5. 傳統 init script 服務可能有相依性,一般來說 init script 前面會寫
可能相依哪些服務,不過實際上手動執行相關服務時候若該服務需要另外
一個服務先啟動,這樣手動啟動服務方式並檢查到。
systemd 基本上會協助處力這部分的相依需求,會預先執行某個服務後再來
執行原本服務。另外服務可以有相依指定當然也可以有互斥指定,某個服務
啟用了與執行了,另外一個服務就不能夠啟用與執行。這個在傳統 init
script 服務架構上要支援會比較麻煩。
6. 有遇過某個服務可能因為某個原因導致要啟動很久所以卡住,導致系統無法
完全開起來情況吧?卡多久沒人知道,得慢慢等。這個在 systemd 內就比較
難發生,而且也可以自己指定某個 service 啟動要求的時間,沒有指定
也會有自己預設的配置設定。
另外有一些 service 可能啟動時候會有一些初始化需要等待,以 systemd
來說會判斷所需相依性,所以該服務可以執行然後等它完成,其他服務部分
就可以先啟動,整個服務啟動的流程也可以更有效率。另外關機庾重開時候
也可以指定服務結束執行等待時間。
systemd 只有優點沒缺點嗎,答案是未必,只是很多東西可以看正面而都非負面
的事情。最後個人感覺,linux distro 的 developer 對於換不換 systemd 是
有他們的考量在,對於末端 end user 或者是 sysadm 的人來說影響不大,就算
有其實也不是問題...
不過老實說系統架構換 systemd 應該很多 sysadm 會擔心吧! 因為是全新的東西,
一般習慣舊架構的人對新事物難免會害怕,就像是 centos 7 改用全新的網路設定
架構都用 Network Manager 管理,有人還是會選擇關閉他直接改設定檔案...
不過常言到進廚房就不要怕熱,走這行也不就是如此?有新的改變其實真的不熟悉
只需要瞭解一下就好... 再者以 sysadm 來說,牽涉的議題其實也不是很深,
帶來的影響其實相當有限....
最後要論 systemd 好壞,一開始貼文不是給個 url 然後要大家表達看法,就算是
我有看法要回應也是回應給那些網路上寫反對意見的人,回應在這邊基本上是根本
沒有必要。再來這篇其實我對於 systemd 陳述也只是 systemd 內冰山一角的好處,
上面表達都是純個人的意見,不是拿來批鬥傳統 init script 的缺點用。