作者 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)。
轉(zhuǎn)載請(qǐng)注明出處铭拧。
原文:http://www.reibang.com/p/11491ee15344
自從將公司電腦的Ubuntu系統(tǒng)升級(jí)到了Ubuntu 16.04 (之前是15.04), 每次開(kāi)機(jī)竟然耗時(shí)2分鐘左右, 簡(jiǎn)直不能忍! 咋能向Windows看齊(Windows都沒(méi)這么慢好嘛), 話(huà)說(shuō)以前的Macbook Pro高配開(kāi)機(jī)只要2秒鐘...
那么如何找出拖慢開(kāi)機(jī)速度的元兇并將其禁用呢?
systemd自帶分析利器systemd-analyze
systemd-analyze有一些參數(shù),大體上來(lái)講就是一些功能, 可以用
man systemd-analyze
來(lái)看看:
其中, 對(duì)我們比較有用的參數(shù)就是blame咨察。
blame : blame是"指責(zé)"的意思嫉父。
如果你平時(shí)使用git來(lái)進(jìn)行版本控制, 那你應(yīng)該知道有個(gè)命令叫
git blame
用git blame加文件名就可以看到文件中每一行最近是誰(shuí)更改的沛硅。
同理, systemd-analyze blame就是顯示開(kāi)機(jī)啟動(dòng)項(xiàng)的時(shí)間, 從最慢依次列出。
systemd-analyze blame
可以看到, 最慢的啟動(dòng)項(xiàng)是NetworkManager-wait-online.service, 竟然用了30秒, 不能忍!
禁用之:
sudo systemctl disable NetworkManager-wait-online.service
systemctl命令绕辖,從字面上理解就是「控制系統(tǒng)」摇肌,因?yàn)?systemctl 是 system 和 ctl 的連寫(xiě),system 是英語(yǔ)「系統(tǒng)」的意思仪际,ctl 則是 control 的縮寫(xiě)围小,是英語(yǔ)「控制」的意思。
用 man systemctl 可以看到它的解釋和用法树碱。
其解釋是「Control the systemd system and service manager」肯适,也就是「控制systemd系統(tǒng)和服務(wù)管理器」。
disable 是英語(yǔ)「使失去能力」的意思成榜。
但是框舔,后來(lái)的使用中,我又發(fā)現(xiàn)一個(gè)拖慢系統(tǒng)的啟動(dòng)項(xiàng)赎婚,叫 plymouth-quit-wait.service刘绣。這次用 disable 卻不能將其徹底禁用。
只能用 mask 來(lái)禁用挣输,也就是:
sudo systemctl mask plymouth-quit-wait.service
為什么呢纬凤?
因?yàn)?mask 這個(gè) systemctl 命令的選項(xiàng)參數(shù)是比 disable 更強(qiáng)力的,可以用 man systemctl 來(lái)查看撩嚼。
首先是 disable 的解釋?zhuān)?/p>
接著看 mask 選項(xiàng):
看到 mask 選項(xiàng)的解釋中有一句英語(yǔ)「This is a stronger version of disable, since it prohibits all kinds of activation of the unit, including enablement and manual activation.」
翻譯過(guò)來(lái)就是:「這是一個(gè)增強(qiáng)版本的 disable停士,因?yàn)樗柚沽怂屑せ钸@個(gè)單元的行為,包括啟用和手動(dòng)激活」绢馍。
mask 是英語(yǔ)「掩蓋向瓷,遮蔽」的意思。
可以看到執(zhí)行了上面的 sudo systemctl mask plymouth-quit-wait.service
這句命令后的輸出:
Created symlink from /etc/systemd/system/plymouth-quit-wait.service to /dev/null.
也就是說(shuō) mask 選項(xiàng)把 plymouth-quit-wait.service 直接軟鏈接到了 /dev/null 這個(gè)著名的「黑洞」中去了舰涌,然后世界就清凈了猖任。
題外
其實(shí), 昨天我還禁用了兩個(gè)啟動(dòng)項(xiàng), 都是fstab中的, 用于掛載(mount)服務(wù)器上的nfs磁盤(pán), 每一個(gè)竟然用了1分鐘左右 (用systemd-analyze blame看到的):
用vim編輯器打開(kāi)/etc/fstab文件(記得要加sudo哦, 不然不能修改此文件):
sudo vim /etc/fstab
就是上圖中
172.19.0.133:/mnt/androidstorage/NFS_RO /mnt/nfs_ro
172.19.0.133:/mnt/androidstorage/NFS_RW /mnt/nfs_rw
那兩行, 表示
把遠(yuǎn)端服務(wù)器172.19.0.133上的/mnt/androidstorage/NFS_RO掛載(sudo mount)到本機(jī)的/mnt/nfs_ro
把遠(yuǎn)端服務(wù)器172.19.0.133上的/mnt/androidstorage/NFS_RW掛載(sudo mount)到本機(jī)的/mnt/nfs_rw
如何禁用呢?
在options那一列中加上 noauto即可, 表示不自動(dòng)啟動(dòng)。
auto是automatic的縮寫(xiě), 表示"自動(dòng)"瓷耙。而noauto就是not/no automatic的縮寫(xiě), 表示"不自動(dòng)"朱躺。
用man fstab來(lái)學(xué)習(xí)一下fstab中每一列的含義:
可以看到, 默認(rèn)情況下(default中)是auto的, 也就是說(shuō)默認(rèn)情況下會(huì)在開(kāi)機(jī)時(shí)自動(dòng)掛載那兩個(gè)nfs磁盤(pán)。
如此處理之后, 再次重啟電腦:
sudo reboot
這回, 電腦啟動(dòng)只要幾秒啦!
小結(jié)
所以, 如果想加快開(kāi)機(jī)啟動(dòng), 只要先用
systemd-analyze blame
列出開(kāi)機(jī)啟動(dòng)項(xiàng)的時(shí)間, 然后禁用(用 systemctl disable 或 mask)那些很慢的即可搁痛。
不過(guò)也要小心, 不要禁用了系統(tǒng)的關(guān)鍵啟動(dòng)項(xiàng)长搀。
我是 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)運(yùn)營(yíng)者鸡典,慕課網(wǎng)精英講師 Oscar 老師源请,終生學(xué)習(xí)者。
熱愛(ài)生活,喜歡游泳谁尸,略懂烹飪舅踪。
人生格言:「向著標(biāo)桿直跑」