日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

我所了解的Systemd

 jfsir 2016-06-23


Ubuntu 16.04把systemd作為Linux啟動(dòng)系統(tǒng),所以,我意識(shí)到是時(shí)候?qū)W習(xí)一下systemd了(雖然有點(diǎn)晚)。systemd出現(xiàn)于大約6年前,并且在幾年前就被眾多Linux發(fā)行版所使用。除了Gentoo,Ubuntu是最后一個(gè)默認(rèn)使用systemd的大的發(fā)行版。甚至Ubuntu 15在去年時(shí)就轉(zhuǎn)為使用systemd。

Linux社區(qū)中關(guān)于systemd的討論已經(jīng)持續(xù)了很長時(shí)間了,如果我還年輕,我可能會(huì)熱衷甚至?xí)⑴c討論,但是現(xiàn)在我并不關(guān)心那些討論,我只是想使用大家已達(dá)成共識(shí)的技術(shù)。令人失望的是論戰(zhàn)主導(dǎo)著對話,反而想學(xué)習(xí)systemd是什么變得困難,下面是我為理解systemd所作出的努力。

免責(zé)聲明:我并非專家,在一些地方難免犯錯(cuò)。我重申,寫這篇博客僅僅是為了作為自己的筆記,歡迎評論,但請不要浪費(fèi)我的時(shí)間討論一些偏激的意見。

參考資料
  • 維基百科(https://en./wiki/Systemd)的介紹不錯(cuò);

  • 官方主頁(https://www./wiki/Software/systemd/)一般,但是提供了很多有用的鏈接;

  • Rethinking PID 1(http:///blog/projects/systemd.html)有點(diǎn)像原始的設(shè)計(jì)文檔;

  • The Biggest Myths(http:///blog/projects/the-biggest-myths.html)注重一些對于systemd的評論;

  • Systemd essentials(https://www./community/tutorials/systemd-essentials-working-with-services-units-and-the-journal)對于管理員新手來說,是一個(gè)非常簡短的備忘錄;

  • 一些Linux發(fā)行版的文檔:RedHat、Ubuntu、arch;

  • unit文件示例。

由于我自己沒有使用裝有systemd的系統(tǒng),關(guān)于在實(shí)踐中使用systemd的鏈接只搜集了上面那些,所以說,我也有點(diǎn)out了。unit file看起來是非常有用的,它對systemd如何啟動(dòng)服務(wù)進(jìn)行配置。systemd也可以使用舊的SysVInit風(fēng)格的腳本來啟動(dòng)服務(wù),包括解析LSB頭部。

我學(xué)到的一些東西

systemd是初始化系統(tǒng)(https://en./wiki/Init),是Linux系統(tǒng)的第一個(gè)用戶進(jìn)程,其進(jìn)程號(hào)為1。內(nèi)核準(zhǔn)備就緒后就會(huì)運(yùn)行systemd,systemd的任務(wù)是運(yùn)行其他用戶進(jìn)程從而組成Unix系統(tǒng),掛載文件系統(tǒng),配置網(wǎng)絡(luò),啟動(dòng)守護(hù)進(jìn)程等。

我們所熟知的init系統(tǒng)是SysVInit,/etc/rc.d目錄中的shell腳本。在當(dāng)今多核、動(dòng)態(tài)設(shè)備的時(shí)代,SysVInit逐漸淡出歷史舞臺(tái),Upstart(http://upstart./)是另外一個(gè)Linux初始化系統(tǒng),Ubuntu已經(jīng)使用了很長時(shí)間,但是大家好像都不太喜歡Upstart。Launchd(https://en./wiki/Launchd)是MacOS下的初始化系統(tǒng),其性能和速度還是可圈可點(diǎn)的,systemd的作者明確表示是受到了Launchd的啟發(fā)。

systemd是init系統(tǒng)思想的重寫版本,其主要的設(shè)計(jì)目標(biāo)是提高性能。過去Unix系統(tǒng)啟動(dòng)時(shí)間高達(dá)90s,使用systemd(或者M(jìn)acOS下的Launchd)基本可以達(dá)到10s,甚至小于1s也是有可能的。systemd可以運(yùn)行的更快,是因?yàn)樗梢圆l(fā)執(zhí)行任務(wù)。此外,它避免了解釋shell腳本的所有開銷。據(jù)測,之于之前的系統(tǒng),systemd是現(xiàn)代化的、全新的、更好的,雖然我無法評估這一點(diǎn),但我相信應(yīng)該如此。

systemd是僅支持Linux的,它采用了一堆非POSIX API來執(zhí)行任務(wù)比如與設(shè)備協(xié)作,配置安全功能等。

我還沒有上手systemd,所以還沒接觸到其他方面。但是我的理解是,整個(gè)Unix配置都合并到unit file中,用來引導(dǎo)systemd配置和啟動(dòng)用戶空間程序。

我還有所顧忌,要不要升級Ubuntu 14 到Ubuntu 16,因?yàn)楸仨氁壦信f東西。升級后會(huì)正常工作嗎?特別提醒,我將Ubuntu 12升級到Ubuntu 14,然后手動(dòng)安裝了一些東西,導(dǎo)致以太網(wǎng)設(shè)備的名稱發(fā)生了改變,使得機(jī)器無法在網(wǎng)絡(luò)下重啟。

一些觀點(diǎn)

我真的不關(guān)心關(guān)于爭論的歷史。systemd是既成事實(shí),但是去關(guān)注一下這些爭論,對于更好地理解systemd也是有幫助的。

對于systemd,大家普遍在抱怨的是其復(fù)雜性。在一個(gè)聚集了60多個(gè)相互關(guān)聯(lián)的二進(jìn)制文件里,systemd做了很多事情,而不僅僅是復(fù)制子進(jìn)程。systemd將udev置于內(nèi)部來管理設(shè)備,它有自己的日志系統(tǒng)(以二進(jìn)制格式存放),等同于一個(gè)定時(shí)任務(wù)、inetd、atd、虛擬終端、一個(gè)登陸進(jìn)程、監(jiān)控系統(tǒng)等,當(dāng)你看到所有被取代的過時(shí)的Unix軟件時(shí),你會(huì)感到驚訝,我也理解了為什么信奉“眾多小工具”哲學(xué)的人為什么不喜歡systemd了。

另外,在sysvinit中,舊的組件組合在一起非常糟糕。shell需要掛載設(shè)備、文件系統(tǒng),然后啟動(dòng)網(wǎng)絡(luò),以便你能夠訪問其他文件系統(tǒng),以正確的順序啟動(dòng)其他守護(hù)進(jìn)程等等。當(dāng)然udev和掛載可能是單獨(dú)的軟件,但是它們只能以一個(gè)特定的關(guān)系運(yùn)行。這么一套包含眾多相互依賴組件的復(fù)雜系統(tǒng)成本很高,有點(diǎn)像說了一個(gè)“眾多小工具”的謊話。也有必須要說一下統(tǒng)一init、 cron、inet、登錄以及類似的模塊,這些都是響應(yīng)事件的啟動(dòng)程序,為什么不共享代碼呢?

作為一個(gè)龐大的項(xiàng)目,雖然systemd只有一種思想,仍然會(huì)有文化關(guān)懷。有些選擇讓我覺得很奇怪,比如二進(jìn)制日志格式。無論出于何種原因,大多數(shù)Linux發(fā)行版都同意使用systemd,我相信他們都會(huì)根據(jù)自己的需要去塑造systemd,這看起來是一種打造軟件的合理方法。

活動(dòng)推薦

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多