1. 程式人生 > >Linux 常用命令 / vim常用命令 / 面試常考命令 彙總 (更新中)

Linux 常用命令 / vim常用命令 / 面試常考命令 彙總 (更新中)

這篇部落格會記錄常用的Linux命令,可以直接使用Ctrl+F來快速查詢命令~

程序類

top

  1. 概述

    top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的工作管理員。
    可以直接使用top命令後,檢視%MEM的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令:
      $ top -u oracle

  2. 格式

    top [-] [d delay] [q] [c] [S] [s] [i] [n]

  3. 主要引數

    d:指定更新的間隔,以秒計算。
    q:沒有任何延遲的更新。如果使用者有超級使用者,則top命令將會以最高的優先序執行。
    c:顯示程序完整的路徑與名稱。
    S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。
    s:安全模式。
    i:不顯示任何閒置(Idle)或無用(Zombie)的行程。
    n:顯示更新的次數,完成後將會退出top。

  4. 內容解釋

    PID(Process ID):程序標示號。
    USER:程序所有者的使用者名稱。
    PR:程序的優先級別。
    NI:程序的優先級別數值。
    VIRT:程序佔用的虛擬記憶體值。
    RES:程序佔用的實體記憶體值。
    SHR:程序使用的共享記憶體值。
    S:程序的狀態,其中S表示休眠,R表示正在執行,Z表示僵死狀態,N表示該程序優先值是負數。
    %CPU:該程序佔用的CPU使用率。
    %MEM:該程序佔用的實體記憶體和總記憶體的百分比。
    TIME+:該程序啟動後佔用的總的CPU時間。
    Command:程序啟動的啟動命令名稱,如果這一行顯示不下,程序會有一個完整的命令列。

pmap

  可以根據程序檢視程序相關資訊佔用的記憶體情況,(程序號可以通過ps檢視)如下所示:
  pmap -d 14596

ps

  1. 作用

    ps顯示瞬間程序 (process) 的動態,使用許可權是所有使用者。

  2. 格式

    ps [options] [--help]

  3. 主要引數

    -A:列出所有的程序。
    -l:顯示長列表。
    -m:顯示記憶體資訊。
    -w:顯示加寬可以顯示較多的資訊。
    -e:顯示所有程序。
    a:顯示終端上的所有程序,包括其它使用者的程序。
    -au:顯示較詳細的資訊。
    -aux:顯示所有包含其它使用者的程序。

  4. 應用例項

在進行系統維護時,經常會出現記憶體使用量驚人,而又不知道是哪一個程序佔用了大量程序的情況。除了可以使用top命令檢視記憶體使用情況之外,還可以使用下面的命令:

ps aux | sort +5n

檔案類

grep

  1. 概要

    grep全稱是Global Regular Expression Print,表示全域性正則表示式版本,它的使用許可權是所有使用者。
    grep命令可以指定檔案中搜索特定的內容,並將含有這些內容的行標準輸出。

  2. 格式

    grep [options]

  3. 主要引數

    [options]主要引數:

    -c:只輸出匹配行的計數。

    -I:不區分大小寫(只適用於單字元)。

    -h:查詢多檔案時不顯示檔名。

    -l:查詢多檔案時只輸出包含匹配字元的檔名。

    -n:顯示匹配行及行號。

    -s:不顯示不存在或無匹配文字的錯誤資訊。

    -v:顯示不包含匹配文字的所有行。

    pattern正則表示式主要引數:

    /:忽略正則表示式中特殊字元的原有含義。

    ^:匹配正則表示式的開始行。

    $: 匹配正則表示式的結束行。

    /<:從匹配正則表示式的行開始。

    />:到匹配正則表示式的行結束。

    [ ]:單個字元,如[A]即A符合要求 。

    [ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求 。

    。:所有的單個字元。

    • :有字元,長度可以為0。

    正則表示式是Linux/Unix系統中非常重要的概念。正則表示式(也稱為“regex”或“regexp”)是一個可以描述一類字串的模式(Pattern)。如果一個字串可以用某個正則表示式來描述,我們就說這個字元和該正則表示式匹配(Match)。這和DOS中使用者可以使用萬用字元 “*”代表任意字元類似。在Linux系統上,正則表示式通常被用來查詢文字的模式,以及對文字執行“搜尋-替換”操作和其它功能。

  4. 應用例項

    查詢DNS服務是日常工作之一,這意味著要維護覆蓋不同網路的大量IP地址。有時IP地址會超過2000個。如果要檢視nnn.nnn網路地址,但是卻忘了第二部分中的其餘部分,只知到有兩個句點,例如nnn nn..。要抽取其中所有nnn.nnn IP地址,使用[0-9 ]/{3 /}/.[0-0/{3/}/。含義是任意數字出現3次,後跟句點,接著是任意數字出現3次,後跟句點。

    $grep '[0-9 ]/{3 /}/.[0-0/{3/}/' ipfile

    補充說明,grep家族還包括fgrepegrep。fgrep是fix grep,允許查詢字串而不是一個模式;egrep是擴充套件grep,支援基本及擴充套件的正則表示式,但不支援/q模式範圍的應用及與之相對應的一些更加規範的模式。

awk

  1. 概要

    awk其名稱得自於它的創始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首個字母。實際上 AWK 的確擁有自己的語言: AWK 程式設計語言 , 三位建立者已將它正式定義為“樣式掃描和處理語言”。它允許您建立簡短的程式,這些程式讀取輸入檔案、為資料排序、處理資料、對輸入執行計算以及生成報表,還有無數其他的功能。

    簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理

  2. 格式

    awk [選項引數] 'script' var=value file(s)

    awk [選項引數] -f scriptfile var=value file(s)

  3. 主要引數

    -F fs or –field-separator fs
    指定輸入檔案折分隔符,fs是一個字串或者是一個正則表示式,如-F:。
    -v var=value or –asign var=value
    賦值一個使用者定義變數。
    -f scripfile or –file scriptfile
    從指令碼檔案中讀取awk命令。
    -mf nnn and -mr nnn
    對nnn值設定內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴充套件功能,在標準awk中不適用。
    -W compact or –compat, -W traditional or –traditional
    在相容模式下執行awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴充套件都被忽略。
    -W copyleft or –copyleft, -W copyright or –copyright
    列印簡短的版權資訊。
    -W help or –help, -W usage or –usage
    列印全部awk選項和每個選項的簡短說明。
    -W lint or –lint
    列印不能向傳統unix平臺移植的結構的警告。
    -W lint-old or –lint-old
    列印關於不能向傳統unix平臺移植的結構的警告。
    -W posix
    開啟相容模式。但有以下限制,不識別:/x、函式關鍵字、func、換碼序列以及當fs是一個空格時,將新行作為一個域分隔符;操作符=不能代替^和^=;fflush無效。
    -W re-interval or –re-inerval
    允許間隔正則表示式的使用,參考(grep中的Posix字元類),如括號表示式[[:alpha:]]。
    -W source program-text or –source program-text
    使用program-text作為原始碼,可與-f命令混用。
    -W version or –version
    列印bug報告資訊的版本。

  4. 應用例項

    log.txt文字內容如下:

    2 this is a test
    3 Are you like awk
    This’s a test
    10 There are orange,apple,mongo

    用法一:

    awk '{[pattern] action}' {filenames} 行匹配語句 awk ” 只能用單引號

    例項:

    每行按空格或TAB分割,輸出文字中的1、4項

    awk ‘{print 1,4}’ log.txt
    2 a
    3 like
    This’s
    10 orange,apple,mongo

    格式化輸出

    awk ‘{printf “%-8s %-10s\n”,1,4}’ log.txt
    2 a
    3 like
    This’s
    10 orange,apple,mongo

sed

  1. 概要
    Linux sed命令是利用script來處理文字檔案。
    sed可依照script的指令,來處理、編輯文字檔案。
    Sed主要用來自動編輯一個或多個檔案;簡化對檔案的反覆操作;編寫轉換程式等。

  2. 格式

    sed [-hnV][-e<script>][-f<script檔案>][文字檔案]

  3. 主要引數

    引數說明:

    -e< script> 或–expression=< script> 以選項中指定的script來處理輸入的文字檔案。
    -f< script檔案>或–file=< script檔案> 以選項中指定的script檔案來處理輸入的文字檔案。
    -h或–help 顯示幫助。
    -n或–quiet或–silent 僅顯示script處理後的結果。
    -V或–version 顯示版本資訊。

    動作說明:

    a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)
    c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
    d :刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;
    i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
    p :列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起執行
    s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g

  4. 應用例項

    在testfile檔案的第四行後新增一行,並將結果輸出到標準輸出,在命令列提示符下輸入如下命令:

    sed -e 4a\newLine testfile
    首先檢視testfile中的內容如下:

    $ cat testfile #檢視testfile 中的內容
    HELLO LINUX!
    Linux is a free unix-type opterating system.
    This is a linux testfile!
    Linux test

    使用sed命令後,輸出結果如下:

    $ sed -e 4a\newline testfile #使用sed 在第四行後新增新字串
    HELLO LINUX! #testfile檔案原有的內容
    Linux is a free unix-type opterating system.
    This is a linux testfile!
    Linux test
    newline

awk、sed、grep對比

  • grep 更適合單純的查詢或匹配文字
  • sed 更適合編輯匹配到的文字
  • awk 更適合格式化文字,對文字進行較複雜格式處理

rm

  1. 概要:

    刪除一個目錄中的一個或多個檔案或目錄,如果沒有使用- r選項,則rm不會刪除目錄。如果使用 rm 來刪除檔案,通常仍可以將該檔案恢復原狀。
    rm是一個危險的命令,使用的時候要特別當心,尤其對於新手,否則整個系統就會毀在這個命令(比如在/(根目錄)下執行rm * -rf)。

  2. 命令格式:

    rm [選項] 檔案…

  3. 命令引數:

    -f, –force 忽略不存在的檔案,從不給出提示。
    -i, –interactive 進行互動式刪除
    -r, -R, –recursive 指示rm將引數中列出的全部目錄和子目錄均遞迴地刪除。
    -v, –verbose 詳細顯示進行的步驟
    –help 顯示此幫助資訊並退出
    –version 輸出版本資訊並退出

  4. 應用例項

    刪除任何.log檔案;刪除前逐一詢問確認

    rm -i *.log

系統資訊

uname -a               # 檢視核心/作業系統/CPU資訊
head -n 1 /etc/issue   # 檢視作業系統版本
cat /proc/cpuinfo      # 檢視CPU資訊
hostname               # 檢視計算機名
lspci -tv              # 列出所有PCI裝置
lsusb -tv              # 列出所有USB裝置
lsmod                  # 列出載入的核心模組
env                    # 檢視環境變數

資源

free -m                # 檢視記憶體使用量和交換區使用量
df -h                  # 檢視各分割槽使用情況
du -sh <目錄名>        # 檢視指定目錄的大小
grep MemTotal /proc/meminfo   # 檢視記憶體總量
grep MemFree /proc/meminfo    # 檢視空閒記憶體量
uptime                 # 檢視系統執行時間、使用者數、負載
cat /proc/loadavg      # 檢視系統負載

vi / vim 常用命令

一、vi / vim 的使用:
vi / vim: 進入vim編輯器 (預設為命令模式) 如: vi a.txt 或者 vim a.txt

二、vi / vim 的三種工作方式:

命令模式: 在這種模式下,可以通過輸入vi的命令對檔案的內容就行處理(複製,刪除,移動等),也可以通過按游標來移動游標
編輯模式: 在這種模式下,可以在游標處輸入內容
命令項模式: 在命令模式下,使用者輸入冒號後,游標會跳到底行,然後輸入命令

模式之間的轉換:
命令模式: 輸入a A i I o O等命令 -> 編輯模式
編輯模式: 按ESC鍵 -> 命令模式
命令項模式: 輸入冒號 -> 命令項模式

三、在命令模式下,可以輸入以下命令;

1.游標移動命令 h:左 l:右 k:上 j:下

2.插入命令
i:在游標處插入 I:在第一行插入內容
a:在游標後插入內容 A:在當前行的尾部插入內容
o:在當前行的下面插入新行 O:在當前行的上面插入新行

3.刪除命令
x: 刪除游標處的字元 X:刪除游標前的一個字元
d0: 刪除游標所在行的第一個字元到當前游標的前一個字元的一串字元
D: 刪除從當前游標所在字元到當前游標所在行的最後一個字元的一串字元
dd: 刪除游標所在行的所有字元/剪切當前行
dw: 刪除從游標處字元開始的第一個單詞
u: 撤銷命令,一步一步撤銷

4.複製貼上、剪下、移動
yy: 複製當前行 nyy: 複製當前行開始的n行

先按 v 進入自由選擇模式:
使用游標移動命令選擇區域,按 y 複製選中行 ,按 d 剪下選中行,在需要貼上處按 P或p 即可。p(小): 在當前游標處下面貼上內容 P(大): 在當前游標處上面貼上內容

四、退出 vi / vim 命令

:w 儲存檔案 不退出vi :wq 儲存檔案,退出vi :q! 不儲存檔案,退出vi