Linux之《荒島餘生》(一)準備篇
04-12
xin片之爭,已經暴露了中國xin的問題,我等碼農束手無策;而在操作系統方面,成果也是乏善可陳;現如今酷炫的Web監控工具,讓很多研發喪失了真正處理問題的能力。
越接近底層,就越接近真相,在計算機的世界,同樣適用。我們的目的,就像是《荒島餘生》一樣:找到一個信念,在最殘酷的環境中,生存下去。說的比較隱晦,其實就是:你換公司了,而你的新公司比較推崇devops,你要自己面對問題。吹的那麼高大上,一副拯救世界的感覺,但本系列的文章知識並不深,很多已經在大學裡的操作系統見過了,雖然照讀課本的叫獸並不能讓你勾起絲毫興趣。如果本系列能夠勾起你的些許興趣,就算目的達到了。本來是想要聊仔細點,但由於時間有限,又不是寫書,原理性的東西就不多說了。內容
文章將會嘗試單純的Cpu、Mem、Net、Disk、IO問題排查,然後組合各種元素,解決一些棘手問題,就是一些常用命令的組合。當然我們是java系的,所以會多一些java方面的討論。如果你不了解行文風格,可以先讀讀:《Java堆外內存排查小結--小姐姐味道》
為什麼Linux系統會出現這樣那樣的問題呢?主要的原因就是計算機的各個部件的速度不均衡。Cpu在等cache line,cache 在等內存,內存在等設備。就像在連續17公里高速下坡路口設個收費站一樣,一不小心就車毀人亡。設備五花八門,通常我們接觸的設備,就是硬碟和網卡。整個業務系統和操作系統充斥著各種各樣的緩衝區,CPU要通過中斷負責他們之間的協調。這樣,會有很多地方會發生bottleneck。監控值排查問題也是有過程的。通常,關注一個硬體資源,比如CPU,我們關注以下基本要素:1) 利用率 一般是瞬時值,屬於採樣範圍,用來判斷有沒有峰值。比如cpu utilization2) 飽和度 一般指資源已完全使用,新請求在特定queue里排隊。比如cpu load過高
3) 錯誤信息 硬體或者驅動錯誤,比如dmesg命令顯示的OOM
- io wait 是什麼意思?
- swap是什麼分區,怎麼關閉?
- /tmp目錄有什麼特殊性?
- 管道是什麼東東?
Linux發行版
接下來熱熱身,瞧瞧Linux有什麼發行版。
我這裡挑選了6個代表性的版本,版本聚焦的功能向專業化和個性化發展。其中,Centos作為最常見的伺服器版本,佔據了大量的市場份額;Ubuntu在GUI和易用性上贏得了桌面用戶;Kali代表了向專業化發展的一個分支。個人使用時間最長的是archlinux,尤其喜歡它的滾動升級功能。但由於Centos在伺服器端的市場份額實在太大,我們以下的討論都基於Centos。據不完全統計,已經有上千個linux版本,見下圖(高清大圖見 https://distrowatch.com/images/other/distro-family-tree.png )。你來告訴我,紅旗、麒麟的位置在哪裡。
將常用腳本加入到PATH中
有些命令組合不好記,頻繁輸入也覺得煩,可以將這些過程整理成腳本,扔到path中。
還記得第一次安裝jdk,添加的環境變數么?Linux和它類似,不過它有多種shell。通常我們用的叫bash,平常說的shell腳本就是bash腳本。但也有很多其他好用的shell,比如csh、ksh、zsh等。查看/etc/shells文件看一下你安裝過的shell[root@localhost ~]$ cat /etc/shells /bin/sh /bin/bash /bin/zsh /sbin/nologin /bin/dash在個人領域,zsh配合oh-my-zsh(推薦)達到最佳,但伺服器一般不會去改你的shell,通過一個環境變數,能夠看到你當前所使用的shell終端。[root@localhost ~]$ echo $SHELL /bin/bash針對於bash,我們的配置就在用戶目錄下的.bashrc文件中。在用戶目錄下創建.bin目錄mkdir ~/.bin
將目錄加入到環境變數PATH中
echo "export PATH=$PATH:~/.bin/" >> ~/.bashrc在.bin創建一個文件xjj,內容為echo "pleasant taste"cat > ~/.bin/xjj <<EOF echo "pleasant taste" EOF給xjj增加可執行許可權chmod a+x ~/.bin/xjj這樣,使用你的用戶,在任何地方,都可以執行xjj了[root@localhost ~]$ xjj pleasant taste真是令人愉悅的味道~
推薦閱讀:
TAG:Linux |
