文件系統(tǒng)相關(guān)
- ==ls---list==:指定要顯示列表的目錄社搅,也可以是具體的文件。
- -a(all, 列出全部文件乳规,包含隱藏文件)
-
-l(list, 輸出格式為長格式形葬,文件的詳情)
第一列第一位表示文件的類型
c:字符文件,s:socket文件暮的,-:普通文件笙以,d:目錄文件,l:鏈接文件
第一列第二位到第十位表示文件的讀寫執(zhí)行權(quán)限位冻辩,前三位為當(dāng)前文件所屬用戶的權(quán)限猖腕,中間三位為該用戶所在的用戶組的權(quán)限,后三位為其他用戶的權(quán)限恨闪。
第二列:代表文件或者目錄的鏈接數(shù)倘感,即目錄或者文件下還包含幾個目錄或者文件數(shù)
下面圖片來源于網(wǎng)絡(luò),解釋的較為清晰:
- -i(inode, 顯示文件的inode值)
- -n(--numeric-uid-gid凛剥,list numeric user and group IDs)
- 思考:將一個目錄的權(quán)限設(shè)置為rw侠仇,是否可以進(jìn)入目錄;將一個目錄的權(quán)限設(shè)置為x,是否可以在該目錄下建立新文件犁珠?
文件的創(chuàng)建:==touch filename==;文件夾的創(chuàng)建==mkdir -p filename/1/2==
設(shè)置創(chuàng)建文件的指定權(quán)限掩碼:==umask nnn== or ==umask u=,g=w,o=rwo==
利用umask命令可以指定哪些權(quán)限將在新文件的默認(rèn)權(quán)限中被刪除。例如互亮,可以使用下面的命令創(chuàng)建掩碼犁享,使得組用戶的寫權(quán)限,其他用戶的讀豹休、寫和執(zhí)行權(quán)限都被取消:
例如:==umask 002==:所對應(yīng)的文件和目錄創(chuàng)建缺省權(quán)限分別為6 6 4和7 7 5
==umask (-S)==:查看當(dāng)前的權(quán)限掩碼
- 變更文件(目錄)的權(quán)限:==chmod==
常見的兩種命令形式:==chmod u+x,o-x filename==; ==chmod 664 filename==
- 變更文件(目錄)的所有者和所屬組:==chown -R new的所屬者 filename==
-R : 對目前目錄下的所有檔案與子目錄進(jìn)行相同的擁有者變更(即以遞回的方式逐個變更)
- 查看文件內(nèi)容:==cat/less/more/head/tail filename==
查看文件的第4行到7行之間的內(nèi)容:head -n 7 filename | tail -n 4
==cat >> filename==:向文件后面追加內(nèi)容
- 查找文件:==locate which find==
==locate==:locate命令其實是find -name的另一種寫法炊昆,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個數(shù)據(jù)庫/var/lib/locatedb凤巨,這個數(shù)據(jù)庫中含有本地所有文件信息视乐。Linux系統(tǒng)自動創(chuàng)建這個數(shù)據(jù)庫,并且每天自動更新一次敢茁,所以使用locate命令查不到最新變動過的文件佑淀。為了避免這種情況,可以在使用locate之前彰檬,先使用==updatedb==命令伸刃,手動更新數(shù)據(jù)庫。
==which==:用于查找并顯示給定命令的絕對路徑,==which ls==
==find==:在指定的目錄查找文件逢倍,用法較廣捧颅,不細(xì)說。==find /home -name "*.txt"==
- 其他常見的命令:
刪除:==rm==较雕,一旦刪除了一個文件碉哑,就無法再恢復(fù)它
拷貝:==cp==;==scp==(遠(yuǎn)程拷貝)
移動位置:==mv== , 也可以重命名。
==tree==:以樹形結(jié)構(gòu)顯示當(dāng)前目錄下的文件;==pstree==:打印進(jìn)程關(guān)系樹
9.壓縮與解壓縮命令:
10.重要工具==lsof==(list open file)
網(wǎng)絡(luò)相關(guān)的命令
- 假設(shè)場景為通過ssh登錄失敗如何排查
查看當(dāng)前網(wǎng)卡的狀態(tài):==ifconfig==
查看網(wǎng)絡(luò)的聯(lián)通性:==ping host/域名/ip==
查看是否是因為22端口否開放,可以先嘗試?yán)?=telnet ip==遠(yuǎn)程登錄亮蒋,==telnet==采用明文傳送報文谭梗,安全性不好。
正常的ssh登錄一般命令:==ssh user@host -p 22==
- 網(wǎng)絡(luò)抓包:==tcpdump==
實例利用tcpdump分析三次握手宛蚓,四次揮手過程
- 網(wǎng)絡(luò)系統(tǒng)的狀態(tài)信息:==netstat==
-c或--continuous:持續(xù)列出網(wǎng)絡(luò)狀態(tài)
-s或--statistice:顯示網(wǎng)絡(luò)工作信息統(tǒng)計表
-t或--tcp:顯示TCP傳輸協(xié)議的連線狀況
-l或--listening:顯示監(jiān)控中的服務(wù)器的Socket
實例利用netstat分析TIME_WAIT狀態(tài)
- 用來顯示處于活動狀態(tài)的套接字信息:==ss==
-l:顯示處于監(jiān)聽狀態(tài)的套接字;-t:只顯示tcp套接字;-n:不解析服務(wù)名稱激捏,以數(shù)字方式顯示
由Recv-Q和Send-Q狀態(tài)的含義引發(fā)的思考,==ss==獲取到的 ==Recv-Q/Send-Q== 在 LISTEN 狀態(tài)以及非 LISTEN 狀態(tài)所表達(dá)的含義是不同:
- 當(dāng)socket處于listen狀態(tài)的時候
Recv-Q:表示全連接隊列當(dāng)前使用了多少凄吏,即當(dāng)前等待服務(wù)器調(diào)用accept()取出的連接數(shù)量远舅。
Send-Q:表示全連接隊列的最大值,由min(backlog,somaxconn)決定
- 當(dāng)socket處于其它狀態(tài)的時候
Recv-Q:網(wǎng)絡(luò)接受隊列痕钢,表示接受到的數(shù)據(jù)己經(jīng)在本地接收緩存了图柏,但是還有多少沒有被進(jìn)程取走,recv()任连。如果Recv-Q一直不為0蚤吹,說明可能遭受了拒絕服務(wù) denial-of-service 攻擊
Send-Q:網(wǎng)絡(luò)發(fā)送隊列,表示數(shù)據(jù)已經(jīng)被進(jìn)程下發(fā)随抠,但是對方并未返回ACK的數(shù)據(jù)包裁着,要先保存在本地發(fā)送緩存區(qū),send()拱她。
- 查看查詢arp緩沖區(qū)中指定主機(jī)的arp條目:==arp==
- 路由相關(guān)的協(xié)議:==route==;==tracepath==;
進(jìn)程相關(guān)的命令
案例分析:當(dāng)服務(wù)器出現(xiàn)卡噸二驰,如何排查問題?{進(jìn)程占用cpu和內(nèi)存問題}
- ==top==:多方信息監(jiān)測系統(tǒng)性能和運行信息的實用工具
==top==顯示的區(qū)域分為統(tǒng)計信息區(qū)和進(jìn)程信息區(qū)秉沼。
統(tǒng)計信息區(qū)的說明
第一行:任務(wù)隊列信息桶雀,與==uptime==命令執(zhí)行的結(jié)果一致
依次為:系統(tǒng)當(dāng)前時間矿酵;主機(jī)已經(jīng)運行的時間;用戶連接數(shù)(==who==);
系統(tǒng)的平均負(fù)載矗积,統(tǒng)計最近1,5,15分鐘的系統(tǒng)平均負(fù)載全肮。(如果高于邏輯cpu的數(shù)目就會超負(fù)載)
第二行:進(jìn)程信息,依次為:進(jìn)程總數(shù)棘捣;正在運行的進(jìn)程辜腺;睡眠的進(jìn)程;停止的進(jìn)程數(shù)柱锹;僵尸進(jìn)程數(shù)哪自。
第三行:cpu信息
==us==:用戶空間占用cpu的百分比
==sy==:內(nèi)核空間占用cpu的百分比
==ni==:用戶進(jìn)程空間內(nèi)改變進(jìn)程的優(yōu)先級的進(jìn)程占用cpu的百分比。
==id==:空閑cpu的百分比
==wa==:IO等待占用CPU的百分比
==hi==:硬中斷(Hardware IRQ)占用CPU的百分比
==si==:軟中斷(Software Interrupts)占用CPU的百分比
==st==:這個虛擬機(jī)被hypervisor偷去的CPU時間(譯注:如果當(dāng)前處于一個hypervisor下的vm禁熏,實際上hypervisor也是要消耗一部分CPU處理時間的)
第四壤巷、五行物理內(nèi)存和swap的使用情況(==free==)
- swap行中的used值在不斷變化時,說明物理內(nèi)存正在與swap交換數(shù)據(jù)瞧毙,這時候真的內(nèi)存出現(xiàn)了不夠用情況胧华。==avail==和==free==和==buff/cache==解釋參考
- ==cat /proc/meminfo==可以查看更詳細(xì)的內(nèi)存信息
- ==vmstat==:虛擬內(nèi)存狀態(tài)(“Viryual Memor Statics”),同樣可以顯示內(nèi)存,I/O宙彪,cpu的使用情況矩动。
進(jìn)程信息區(qū)的說明:
==PID==:進(jìn)程ID,進(jìn)程的唯一標(biāo)識符
==USER==:進(jìn)程所有者的實際用戶名释漆。
==PR==:進(jìn)程的調(diào)度優(yōu)先級悲没。這個字段的一些值是'rt'。這意味這這些進(jìn)程運行在實時態(tài)男图。
==NI==:進(jìn)程的nice值(優(yōu)先級)示姿。越小的值意味著越高的優(yōu)先級。負(fù)值表示高優(yōu)先級逊笆,正值表示低優(yōu)先級
==VIRT==:進(jìn)程使用的虛擬內(nèi)存栈戳。進(jìn)程使用的虛擬內(nèi)存總量,單位kb难裆。VIRT=SWAP+RES
==RES==:駐留內(nèi)存大小子檀。駐留內(nèi)存是任務(wù)使用的非交換物理內(nèi)存大小。進(jìn)程使用的乃戈、未被換出的物理內(nèi)存大小褂痰,單位kb。RES=CODE+DATA
==SHR==:SHR是進(jìn)程使用的共享內(nèi)存偏化。共享內(nèi)存大小脐恩,單位kb
==S==:這個是進(jìn)程的狀態(tài)(需要詳細(xì)了解)。它有以下不同的值:
D - 不可中斷的睡眠態(tài)侦讨。
R – 運行態(tài)
S – 睡眠態(tài)
T – 被跟蹤或已停止
Z – 僵尸態(tài)
==%CPU==自從上一次更新時到現(xiàn)在任務(wù)所使用的CPU時間百分比驶冒。
==%MEM==:進(jìn)程使用的可用物理內(nèi)存百分比。
==TIME+==:任務(wù)啟動后到現(xiàn)在所使用的全部CPU時間韵卤,精確到百分之一秒骗污。
==COMMAND==:運行進(jìn)程所使用的命令。進(jìn)程名稱(命令名/命令行)
備注:==top==使用過程中常用的技術(shù)
- 輸入1:列出全部的CPU使用情況
- 輸入P:根據(jù)CPU使用百分比大小進(jìn)行排序沈条;
- 輸入M:根據(jù)駐留內(nèi)存大小進(jìn)行排序需忿;
- 輸入f:從當(dāng)前顯示中添加或者刪除項目
更厲害的工具==dstat==:結(jié)合的==vmstat==和==iostat==,還有網(wǎng)絡(luò)蜡歹。
更厲害的工具==htop==:友好美觀的界面屋厘,吸引人。
==ps==:查看當(dāng)前系統(tǒng)的進(jìn)程相關(guān)信息
常用的命令為==ps -aux==和==ps -ef====kill==:向進(jìn)程發(fā)生信號月而,==kill -l==:顯示信號的類型汗洒;==kill -9 pid==:無條件的殺死pid進(jìn)程。
重寫 ==/proc/sys/vm/drop-caches==釋放內(nèi)存資源父款,(釋放內(nèi)存前的一個好習(xí)慣是將當(dāng)前緩存同步到磁盤==sync==)
cpu親和技術(shù)
==oom killer==
調(diào)整進(jìn)程優(yōu)先級==nice==;==renice==
==pstack pid==:跟蹤進(jìn)程椧绨空間,ubuntu系統(tǒng)安裝可能會出現(xiàn)可執(zhí)行文件==/usr/bin/pstack==出現(xiàn)亂碼憨攒,需要手動更改該文件世杀。
==strace==:跟蹤進(jìn)程執(zhí)行時的系統(tǒng)調(diào)用和所接收的信號
每一行都是一條系統(tǒng)調(diào)用,strace可以跟蹤到一個進(jìn)程產(chǎn)生的系統(tǒng)調(diào)用,包括參數(shù)肝集,返回值瞻坝,執(zhí)行消耗的時間⌒诱埃可以利用==pstack== 和==strace==分析程序在哪里耗時
磁盤相關(guān)的命令
- 報告文件系統(tǒng)整個磁盤空間的使用情況==df -mh==
更多的信息參考==cat /proc/diskstats==
- 對文件和目錄磁盤使用的空間的查看==du filename==
==sudo du -smh /tmp/*== 以易讀的形式顯示文件夾占用磁盤空間的總和所刀。
- 測試磁盤讀寫速度
==iostat -x==:顯示當(dāng)前系統(tǒng)磁盤IO情況。
參數(shù)詳解
==dd==:測試磁盤讀寫的速度
測試磁盤寫:==sudo time dd if=/dev/zero of=/tmp/test bs=50K count=12000==
測試磁盤讀:==sudo time dd if=/dev/sda1 of=/dev/null bs=50K count=12000==
同時測試磁盤讀寫:==sudo time dd if=/dev/sda1 of=/tmp/text2 bs=50K count=12000==
linux中的磁盤調(diào)度算法以及調(diào)優(yōu)