1、linux命令
1.1 系統結構
/ ##根目錄 /bin ##二進制可執行文件,系統常規命令 /boot ##啓動目錄,存放系統自動啓動文件,內核,初始化程序 /dev ##系統設備管理文件 /etc ##大多數系統配置文件存放路徑 /home/子目錄 ##普通用戶家目錄 /lib ##函數庫 /lib64 ##64位函數庫 /media ##臨時掛載點 /mnt ##臨時掛載點 /run ##自動臨時設備掛載點 /opt ##第三方軟件安裝路徑 /proc ##系統硬件信息和系統進程信息 /root ##超級用戶家目錄 /sbin ##系統管理命令,通常只有root可以執行 /srv ##系統數據目錄 /var ##系統數據目錄 /sys ##內核相關數據 /tmp ##臨時文件產生目錄 /usr ##用戶相關信息數據 |
1.2 常用命令
ls, list 的縮寫,可以查看文件夾包含的文件,而且可以查看文件權限(包括目錄、文件夾、文件權限)查看目錄信息等等
-a 列出目錄所有文件,包含以.開始的隱藏文件 -A 列出除.及..的其它文件 -r 反序排列 -t 以文件修改時間排序 -S 以文件大小排序 -h 以易讀大小顯示 -l 除了文件名之外,還將文件的權限、所有者、文件大小等信息詳細列出來 ls -lhrt #按易讀方式按時間反序排序,並顯示文件詳細信息 ls -lrS #按大小反序顯示文件詳細信息 ls -l t* #列出當前目錄中所有以"t"開頭的目錄的詳細內容 |
cd,change Directory的縮寫
cd /root/Docements # 切換到目錄/root/Docements cd ./path # 切換到當前目錄下的path目錄中,“.”表示當前目錄 cd ../path # 切換到上層目錄中的path目錄中,“..”表示上一層目錄 cd ~ #進入當前用戶家目錄,即/roo cd - #當前目錄和上一次工作路徑所在目錄之間的切換 |
pwd ,用於查看當前工作目錄路徑
pwd #查看當前路徑 pwd -P #查看軟鏈接的實際路徑 |
grep ,(Global Regular Expression Print) 全局正則表達式搜索
grep [option] pattern file|dir -c 計算符合樣式的列數 -i 忽略大小寫 -l 只列出文件內容符合指定的樣式的文件名稱 -f 從文件中讀取關鍵詞 -n 顯示匹配內容的所在文件中行數 -R 遞歸查找文件夾 |
find,用於在文件樹中查找文件,並作出相應的處理
-name 按照文件名查找文件 -perm 按文件權限查找文件 -user 按文件屬主查找文件 -group 按照文件所屬的組來查找文件。 -type 查找某一類型的文件,諸如: b - 塊設備文件 d - 目錄 c - 字符設備文件 l - 符號鏈接文件 p - 管道文件 f - 普通文件 -size n :[c] 查找文件長度爲n塊文件,帶有c時表文件字節大小 -amin n 查找系統中最後N分鐘訪問的文件 -atime n 查找系統中最後n*24小時訪問的文件 -cmin n 查找系統中最後N分鐘被改變文件狀態的文件 -ctime n 查找系統中最後n*24小時被改變文件狀態的文件 -mmin n 查找系統中最後N分鐘被改變文件數據的文件 -mtime n 查找系統中最後n*24小時被改變文件數據的文件 |
cp,將源文件複製至目標文件,或將多個源文件複製至目標目錄
cp -ai a.txt test #複製 a.txt 到 test 目錄下,保持原文件時間,如果原文件存在提示是否覆蓋。 cp -s a.txt link_a.txt #爲 a.txt 建議一個鏈接(快捷方式) cp file1 file2 file3 dir #把文件file1、file2、file3複製到目錄dir中 |
mv,用於移動文件、目錄或更名
-f :force強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋 -i :若目標文件已經存在,就會詢問是否覆蓋 -u :若目標文件已經存在,且比目標文件新,纔會更新 mv file1 file2 file3 dir # 把文件file1、file2、file3移動到目錄dir中 mv file1 file2 # 把文件file1重命名爲file2 |
rm,用於刪除文件或目錄
-f :就是force的意思,忽略不存在的文件,不會出現警告消息 -i :互動模式,在刪除前會詢問用戶是否操作 -r :遞歸刪除,最常用於目錄刪除,它是一個非常危險的參數 rm -i file # 刪除文件file,在刪除之前會詢問是否進行該操作 rm -fr dir # 強制刪除目錄dir中的所有文件 |
ps,用於將某個時間點的進程運行情況選取下來並輸出
-a :不與terminal有關的所有進程 -u :有效用戶的相關進程 -x :一般與a參數一起使用,可列出較完整的信息 -e :顯示環境變量 -f :顯示進程間的關係 -l :較長,較詳細地將PID的信息列出 ps aux | grep apache # 查看系統所有的進程數據,與grep聯用查找某進程 ps -ef | grep apache # 顯示當前所有進程環境變量及進程間關係 |
kill,用於向某個工作(%jobnumber)或者是某個PID(數字)傳送一個信號,它通常與ps和jobs命令一起使用
kill -signal PID #signal的常用參數 1:SIGHUP,啓動被終止的進程 2:SIGINT,相當於輸入ctrl+c,中斷一個程序的進行 9:SIGKILL,強制中斷一個進程的進行 15:SIGTERM,以正常的結束進程方式來終止進程 17:SIGSTOP,相當於輸入ctrl+z,暫停一個進程的進行 kill -9 $(ps -ef | grep pro1) #先使用ps查找進程pro1,然後用kill殺掉 |
file,用來探測給定文件的類型
[root@localhost ~]# file install.log install.log: UTF-8 Unicode text |
tar,用來壓縮和解壓文件。tar本身不具有壓縮功能,只具有打包功能,有關壓縮及解壓是調用其它的功能來完成。
-z 支持gzip壓縮 / -j 支持bzip2壓縮 -c 壓縮 / -x 解壓 / -t 查看打包文件的內容含有哪些文件名 -v 顯示操作過程 -f 指定壓縮文件 壓縮:tar -jcv -f filename.tar.bz2 要被處理的文件或目錄名稱 查詢:tar -jtv -f filename.tar.bz2 解壓:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄 |
more,一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示。
less, 可以隨意瀏覽文件
more +3 text.txt #顯示文件中從第3行起的內容 ls -l | more -5 #在所列出文件目錄詳細信息,藉助管道使每次顯示 5 行 ps -aux | less -N #ps 查看進程信息並通過 less 分頁顯示 less 1.log 2.log #查看多個文件 |
chgrp,用來改變文件或目錄所屬的用戶組
chgrp -R mengxin /usr/meng #遞歸地把/usr/meng目錄下中的所有文件和子目錄下所有文件的用戶組修改爲mengxin |
chown,可以向某個用戶授權,使該用戶變成指定文件的所有者或者改變文件所屬的組。
chown -R liu /usr/meng #將目錄/usr/meng及其下面的所有文件、子目錄的文件主改成 liu |
chmod,用於改變文件的權限
u User,即文件或目錄的擁有者; g Group,即文件或目錄的所屬羣組; o Other,除了文件或目錄擁有者或所屬羣組之外,其他用戶皆屬於這個範圍; a All,即全部的用戶,包含擁有者,所屬羣組以及其他用戶; r 讀取權限,數字代號爲“4”; w 寫入權限,數字代號爲“2”; x 執行或切換權限,數字代號爲“1”; <權限範圍>+<權限設置>:開啓權限範圍的文件或目錄的該選項權限設置; <權限範圍>-<權限設置>:關閉權限範圍的文件或目錄的該選項權限設置; <權限範圍>=<權限設置>:指定權限範圍的文件或目錄的該選項權限設置; chmod [-R] abc文件或目錄 #其中a,b,c各爲一個數字,分別表示User、Group、及Other的權限。 chmod ug=rwx,o=x file chmod 771 file |
time,用於測算一個命令(即程序)的執行時間
time ./process time ps aux 在程序或命令運行結束後,在最後輸出了三個時間,它們分別是: user:用戶CPU時間,命令執行完成花費的用戶CPU時間,即命令在用戶態中執行時間總和; system:系統CPU時間,命令執行完成花費的系統CPU時間,即命令在覈心態中執行時間總和; real:實際時間,從command命令行開始執行到運行終止的消逝時間; |
2、top的內存排序
top命令可以實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。
在top命令執行過程中可以使用的一些交互命令。這些命令都是單字母的,如果在命令行中使用了-s選項, 其中一些命令可能會被屏蔽。
M:根據駐留內存大小進行排序;
P:根據CPU使用百分比大小進行排序;
T:根據時間/累計時間進行排序; H:線程查看模式切換爲開或關; |
第一行,任務隊列信息,同 uptime 命令的執行結果
第二行,Tasks — 任務(進程)
第三行,cpu狀態信息(佔用CPU的百分比)
第四行,內存狀態
第五行,swap交換分區信息
第六行,空行。
第七行以下:各進程(任務)的狀態監控
3、查看線程
ps -T -p <pid> top -H -p <pid> pstree <pid> 假設要查看的進程爲my_process: # ps -ef | grep my_process root 10001 3322 0 14:05 ? 00:01:19 my_process # ps -T -p 10001 PID SPID TTY STAT TIME COMMAND 10001 10001 ? Sl 0:00 my_process 10001 10023 ? Sl 0:00 my_process # top -H -p 10001 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10300 root -46 0 2048420 422828 19784 S 0.3 10.4 0:01.15 my_process |
4、awk的統計和end用法
awk是一種編程語言,用於在linux/unix下對文本和數據進行處理。數據可以來自標準輸入(stdin)、一個或多個文件,或其它命令的輸出。
awk --模式 --/正則表達式/:使用通配符的擴展集。 --關係表達式:使用運算符進行操作,可以是字符串或數字的比較測試。 --模式匹配表達式:用運算符~(匹配)和~!(不匹配)。 --BEGIN語句塊、pattern語句塊、END語句塊 --操作 --變量或數組賦值 --輸出命令 --內置函數 --控制流語句 |
一個awk腳本通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊3部分組成,這三個部分是可選的。任意一個部分都可以不出現在腳本中,腳本通常是被單引號或雙引號中
awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file 注意: ①、所有用作算術運算符進行操作,操作數自動轉爲數值,所有非數值都變爲0 ②、> < 可以作爲字符串比較,也可以用作數值比較 ③、默認的字段定界符是空格 ④、使用if(key in array)判斷數組中是否包含key鍵值,因爲數組索引可以是數字和字符串,在awk中數組叫做關聯數組(associative arrays),只要通過數組引用它的key,就會自動創建改序列。 ⑤、數組下標是從1開始 其他: ①、字段引用 $ ②、讀取下一條記錄 next ③、輸出到一個文件 echo | awk '{printf("hello word!n") > "datafile"}' 或 echo | awk '{printf("hello word!n") >> "datafile"}' ④、length返回字符串以及數組長度,split進行分割字符串爲數組,也會返回分割得到數組長度 awk 'BEGIN{info="it is a test";lens=split(info,tA," ");print length(tA),lens;}' 4 4 實例:
①、以第一列爲分組,進行第二列求和,變形:s[$1" "$2] += $3
awk '{ s[$1] += $2 } END { for ( i in s ) { print i , s[i]}}' test.txt ②、求取第一列的總和 awk 'BEGIN{ sum =0 }{ sum += $1 }END{ print sum}' test.txt ③、截取第一列的最大值 awk 'BEGIN{MAX=0}{if( $1 > MAX) MAX=$1}END{print MAX}' test.txt ④、統計IP訪問量 awk '{print $1}' access.log | sort -n | uniq | wc -l ⑤、查看某一時間段的IP訪問量(4-5點) grep"07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l |