自從將公司電腦的Ubuntu系統(tǒng)升級(jí)到了Ubuntu 16.04 (之前是15.04), 每次開機(jī)竟然耗時(shí)2分鐘左右, 簡(jiǎn)直不能忍! 咋能向Windows看齊(Windows都沒這么慢好嘛), 話說以前的Macbook Pro高配開機(jī)只要2秒鐘...
十載的中寧網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整中寧建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“中寧網(wǎng)站設(shè)計(jì)”,“中寧網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
那么如何找出拖慢開機(jī)速度的元兇并將其禁用呢?
systemd-analyze有一些參數(shù),大體上來講就是一些功能, 可以用
來看看:
其中, 對(duì)我們比較有用的參數(shù)就是blame。
如果你平時(shí)使用git來進(jìn)行版本控制, 那你應(yīng)該知道有個(gè)命令叫
用git blame加文件名就可以看到文件中每一行最近是誰更改的。
同理, systemd-analyze blame就是顯示開機(jī)啟動(dòng)項(xiàng)的時(shí)間, 從最慢依次列出。
可以看到, 最慢的啟動(dòng)項(xiàng)是NetworkManager-wait-online.service, 竟然用了30秒, 不能忍!
禁用之:
但是,后來的使用中,我又發(fā)現(xiàn)一個(gè)拖慢系統(tǒng)的啟動(dòng)項(xiàng),叫 plymouth-quit-wait.service。這次用 disable 卻不能將其徹底禁用。
只能用 mask 來禁用,也就是:
為什么呢?
因?yàn)?mask 這個(gè) systemctl 命令的選項(xiàng)參數(shù)是比 disable 更強(qiáng)力的,可以用 man systemctl 來查看。
首先是 disable 的解釋:
接著看 mask 選項(xiàng):
看到 mask 選項(xiàng)的解釋中有一句英語「This is a stronger version of disable, since it prohibits all kinds of activation of the unit, including enablement and manual activation.」
翻譯過來就是:「這是一個(gè)增強(qiáng)版本的 disable,因?yàn)樗柚沽怂屑せ钸@個(gè)單元的行為,包括啟用和手動(dòng)激活」。
可以看到執(zhí)行了上面的 sudo systemctl mask plymouth-quit-wait.service 這句命令后的輸出:
也就是說 mask 選項(xiàng)把 plymouth-quit-wait.service 直接軟鏈接到了 /dev/null 這個(gè)著名的「黑洞」中去了,然后世界就清凈了。
其實(shí), 昨天我還禁用了兩個(gè)啟動(dòng)項(xiàng), 都是fstab中的, 用于掛載(mount)服務(wù)器上的nfs磁盤, 每一個(gè)竟然用了1分鐘左右 (用systemd-analyze blame看到的):
用vim編輯器打開/etc/fstab文件(記得要加sudo哦, 不然不能修改此文件):
就是上圖中
那兩行, 表示
如何禁用呢?
在options那一列中加上 noauto即可, 表示不自動(dòng)啟動(dòng)。
auto是automatic的縮寫, 表示"自動(dòng)"。而noauto就是not/no automatic的縮寫, 表示"不自動(dòng)"。
用man fstab來學(xué)習(xí)一下fstab中每一列的含義:
可以看到, 默認(rèn)情況下(default中)是auto的, 也就是說默認(rèn)情況下會(huì)在開機(jī)時(shí)自動(dòng)掛載那兩個(gè)nfs磁盤。
如此處理之后, 再次重啟電腦:
這回, 電腦啟動(dòng)只要幾秒啦!
所以, 如果想加快開機(jī)啟動(dòng), 只要先用
列出開機(jī)啟動(dòng)項(xiàng)的時(shí)間, 然后禁用(用 systemctl disable 或 mask)那些很慢的即可。
本文整理自 My 5 Favorite Linux Shell Tricks for SPEEEEEED (and efficiency) 。這里列出的小技巧可以讓你在使用shell的時(shí)候更加高效~
設(shè)想這樣一個(gè)場(chǎng)景:你輸入了 apt-get update ,然后發(fā)現(xiàn)需要 sudo 權(quán)限才能運(yùn)行。除了通常的按下向上箭頭,然后移動(dòng)到行首添加 sudo 再運(yùn)行,你可以輸入
按下回車后,shell會(huì)生成 sudo apt-get update ,也就是說, !! 被替換為上一條命令的內(nèi)容。
翻譯過來可以理解為截?cái)嗝?,并且重新粘貼截?cái)鄡?nèi)容。這個(gè)操作類似于emacs中的快捷鍵。我們可以使用 ctrl + K 來截?cái)喙鈽?biāo)后方的命令內(nèi)容,然后用 ctrl + Y 來重新粘貼截?cái)嗟膬?nèi)容。
例如:
注意 ctrl + Y 可以多次粘貼。
而如果想要截?cái)喙鈽?biāo)之前的內(nèi)容,可以用 ctrl + U 。(事實(shí)上很多emacs的快捷鍵都可以直接在shell環(huán)境下使用)
在開發(fā)和調(diào)試過程中,我們常常會(huì)使用 tail -f 命令來追蹤日志的輸出。這種方式有一個(gè)問題,即我們無法回溯更早的日志內(nèi)容。因此我推薦之后都使用 less +F 命令來追蹤日志內(nèi)容。這個(gè)命令同樣是從文件的尾部開始輸出,然后在文件內(nèi)容更新時(shí)輸出更新內(nèi)容。在使用這個(gè)命令時(shí),可以按下 ctrl + C 組合鍵,然后用上下箭頭就可以遍歷整個(gè)文件了。之后按下 shift + F 來回到尾部追蹤的模式。
ctrl + x + e (按住ctrl,然后先按下x,再按下e),就可以彈出一個(gè)編輯器來編輯你當(dāng)前的命令。
設(shè)想如下的情形:
我們要對(duì)一個(gè)host進(jìn)行多次操作,而每次我們都要重新輸入一遍這個(gè)host的!這在調(diào)試和維護(hù)過程中是非常繁瑣的。 alt + . 就為我們提供了一個(gè)非常便捷的功能!按下這個(gè)命令可以粘貼上一條命令的參數(shù)。
Netstat 命令用于顯示各種網(wǎng)絡(luò)相關(guān)信息,如網(wǎng)絡(luò)連接,路由表,接口狀態(tài) (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。
執(zhí)行netstat后,其輸出結(jié)果為
從整體上看,netstat的輸出結(jié)果可以分為兩個(gè)部分:
一個(gè)是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指%0A的是接收隊(duì)列和發(fā)送隊(duì)列。這些數(shù)字一般都應(yīng)該是0。如果不是則表示軟件包正在隊(duì)列中堆積。這種情況只能在非常少的情況見到。
另一個(gè)是Active UNIX domain sockets,稱為有源Unix域套接口(和網(wǎng)絡(luò)套接字一樣,但是只能用于本機(jī)通信,性能可以提高一倍)。
Proto顯示連接使用的協(xié)議,RefCnt表示連接到本套接口上的進(jìn)程號(hào),Types顯示套接口的類型,State顯示套接口當(dāng)前的狀態(tài),Path表示連接到套接口的其它進(jìn)程使用的路徑名。
-a (all)顯示所有選項(xiàng),默認(rèn)不顯示LISTEN相關(guān)
-t (tcp)僅顯示tcp相關(guān)選項(xiàng)
-u (udp)僅顯示udp相關(guān)選項(xiàng)
-n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字。
-l 僅列出有在 Listen (監(jiān)聽) 的服務(wù)狀態(tài)
-p 顯示建立相關(guān)鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴(kuò)展信息,例如uid等
-s 按各個(gè)協(xié)議進(jìn)行統(tǒng)計(jì)
-c 每隔一個(gè)固定時(shí)間,執(zhí)行該netstat命令。
提示:LISTEN和LISTENING的狀態(tài)只有用-a或者-l才能看到
列出所有端口 netstat -a
列出所有 tcp 端口 netstat -at
列出所有 udp 端口 netstat -au
只顯示監(jiān)聽端口 netstat -l
只列出所有監(jiān)聽 tcp 端口 netstat -lt
只列出所有監(jiān)聽 udp 端口 netstat -lu
只列出所有監(jiān)聽 UNIX 端口 netstat -lx
顯示所有端口的統(tǒng)計(jì)信息 netstat -s
顯示 TCP 或 UDP 端口的統(tǒng)計(jì)信息 netstat -st 或 -su
netstat -p 可以與其它開關(guān)一起使用,就可以添加 “PID/進(jìn)程名稱” 到 netstat 輸出中,這樣 debugging 的時(shí)候可以很方便的發(fā)現(xiàn)特定端口運(yùn)行的程序。
當(dāng)你不想讓主機(jī),端口和用戶名顯示,使用 netstat -n。將會(huì)使用數(shù)字代替那些名稱。
同樣可以加速輸出,因?yàn)椴挥眠M(jìn)行比對(duì)查詢。
如果只是不想讓這三個(gè)名稱中的一個(gè)被顯示,使用以下命令
netstat 將每隔一秒輸出網(wǎng)絡(luò)信息。
在輸出的末尾,會(huì)有如下的信息
注意: 使用 netstat -rn 顯示數(shù)字格式,不查詢主機(jī)名稱。
并不是所有的進(jìn)程都能找到,沒有權(quán)限的會(huì)不顯示,使用 root 權(quán)限查看所有的信息。
找出運(yùn)行在指定端口的進(jìn)程
顯示詳細(xì)信息,像是 ifconfig 使用 netstat -ie:
查看連接某服務(wù)端口最多的的IP地址
TCP各種狀態(tài)列表
;?????diff命令在最簡(jiǎn)單的情況下,比較給定的兩個(gè)文件的不同。如果使用“-”代替“文件”參數(shù),則要比較的內(nèi)容將來自標(biāo)準(zhǔn)輸入。diff命令是以逐行的方式,比較文本文件的異同處。如果該命令指定進(jìn)行目錄的比較,則將會(huì)比較該目錄中具有相同文件名的文件,而不會(huì)對(duì)其子目錄文件進(jìn)行任何比較操作。下面是linuxdiff命令的具體介紹:
diff(diff即different簡(jiǎn)寫)命令用于比較文件的差異。
選項(xiàng):
-
-a或——text:diff預(yù)設(shè)只會(huì)逐行比較文本文件;
-b或_ignore-space-change:不檢查空格字符的不同;
-B或_ignore-blank-lines:不檢查空白行;
-c:顯示全部?jī)?nèi)容,并標(biāo)出不同之處;
-C
-d或——minimal:使用不同的演算法,以小的單位來做比較;
-D
-e或——ed:此參數(shù)的輸出格式可用于ed的script文件;
-f或-forward-ed:輸出的格式類似ed的script文件,但按照原來文件的順序來顯示不同處;
-H或_speed-large-files:比較大文件時(shí),可加快速度;
-l
-i或_ignore-case:不檢查大小寫的不同;
-l或——paginate:將結(jié)果交由pr程序來分頁;
-n或——rcs:將比較結(jié)果以RCS的格式來顯示;
-N或_new-file:在比較目錄時(shí),若文件A僅出現(xiàn)在某個(gè)目錄中,預(yù)設(shè)會(huì)顯示:Onlyin目錄,文件A若使用-N參數(shù),則diff會(huì)將文件A與一個(gè)空白的文件比較;
-p:若比較的文件為C語言的程序碼文件時(shí),顯示差異所在的函數(shù)名稱;
-P或_unidirectional-new-file:與-N類似,但只有當(dāng)?shù)诙€(gè)目錄包含了第一個(gè)目錄所沒有的文件時(shí),才會(huì)將這個(gè)文件與空白的文件做比較;
-q或_brief僅顯示有無差異,不顯示詳細(xì)的信息;
-r或——recursive:比較子目錄中的文件;
-s或_report-identical-files:若沒有發(fā)現(xiàn)任何差異,仍然顯示信息;
-S
-t或_expand-tabs:在輸出時(shí),將tab字符展開;
-T或_initial-tab:在每行前面加上tab字符以便對(duì)齊;
-u,-U
-v或——version:顯示版本信息;
-w或_ignore-all-space:忽略全部的空格字符;
-W
-x
-X
-y或_side-by-side:以并列的方式顯示文件的異同之處;
_help:顯示幫助;
_left-column:在使用-y參數(shù)時(shí),若兩個(gè)文件某一行內(nèi)容相同,則僅在左側(cè)的欄位顯示該行內(nèi)容;
_suppress-common-lines:在使用-y參數(shù)時(shí),僅顯示不同之處。
以上就是今天的分享了,希望可以幫助到大家。
本文章基于thinkpadE15品牌、centos7系統(tǒng)撰寫的。