linux:基礎知識整理

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章