Linux常用命令總結


總結一下日常開發中常用的Linux命令

忘記命令怎么使用了可以使用man指令來,例如 man ps ;man grep;

基礎使用

1、進入目錄 命令 --> cd /xxx

# 例子
cd /home/user  進入到home/user目錄

2、查看自己所在路徑 --> pwd

# 例子 我們在/home/user下執行pwd命令
pwd

image

3、我想看看這個文件的內容

直接查看文件內容(cat

# cat命令

image

分段查看文件內容(more

# more命令

image

敲回車或者空格,可以繼續查看往下的內容,按q可以直接退出

image

從尾部查看文件內容(tail

# tail命令,默認打印末尾10行

image

  • 打印末尾指定行數,加上參數-n(假設打印20行)

     # tail -n 20 /proc/cpuinfo
    

image

  • 追加打印,加上參數-f(相當於一直”觀察着“日志,當有新的內容寫入到文件里面,就會打印出來,例如打debug日志等)

    # tail -f /debug.log
    
    # 使用ctrl+c的方式退出
    
  • 更多的參數,請查閱man tail

image

從頭開始查看文件內容(head

# head命令,默認打印文件頭前10行

# 例如 head /proc/cpuinfo

image

  • 打印指定行數,同樣是使用-n參數

    # head -n 20 /proc/cpuinfo
    

image

  • 更多的參數用法,還是使用man指令

4、查看進程快照信息(ps

# ps -ef 或者 ps aux

# ps -ef  代表使用標准形式打印所有的進程信息
# ps -aux 代表使用BSD形式打印所有的進程信息
  • ps -ef

image

  • ps -aux

image

  • 配合 grep 做篩選,我的環境上面有docker,那我只想得到docker的進程信息

    # ps -ef | grep docker
    

image

5、查看當前目錄下的內容(ls

# ls

image

  • 加上參數a,把所有的內容都顯示出來,包括隱藏的

    # 假設我創建一個文件,以.開頭,此時通過ls是看不到的,因為.開頭的文件是隱藏文件
    
    # touch .yincang
    

image

# ls -a

# 把隱藏的文件也給顯示出來了

image

6、創建文件夾(mkdir)、刪除文件夾(rmdir

首先我們先進入到/home/amg目錄下

  • 在該目錄下創建dir1、dir2、dir3 三個文件夾,其中dir1單獨創建,dir2、dir3組合創建

    # mkdir dir1
    # mkdir dir2 dir3
    

image

  • 加上-p參數,遞歸創建,意思就是,創建的父級文件夾不存在就會先把父級文件夾創建出來,再創建子文件夾

    # mkdir -p dir4/subdir1
    

image

我們回到/home/amg目錄下

  • 現在把剛剛創建的dir1、dir2、dir3文件夾刪除,這里演示兩種方法

    1. 使用rmdir

      # rmdir dir1
      

image

  1. 用rm -rf

    # rm -rf dir2 dir3
    

image

  • 現在dir4這個文件夾里面是有內容的,🤔思考一下,我們使用就使用rmdir能否刪除掉,使用rm -rf呢?

    # rmdir dir4
    

image

好吧,我可以提前告訴你 rm -rf是肯定可以的,因為rm本來就是移除文件或者文件夾的

  • -r屬性代表的是遞歸刪除目錄及其內容
  • -f屬性代表的是force,忽略不存在的文件和參數,強制刪除且不提示

如果我要使用 rmdir命令刪除不為空的文件夾怎么辦?

  • 其實也是加上一個參數 -p,其實這里是先刪除dir4里面的subdir1,subdir1為空,可以刪除成功,而把subdir1刪除了之后,dir4自然也為空,那么順帶就把dir4也給刪除了

    # rmdir -p dir4/subdir1/
    

image

  • 如果subdir1不為空,就不能使用這種方法了,還是使用rm吧,絕對可以,一鍵刪除yyds

7、創建一個文件(touchvi/vim

  • touch命令

    本質上touch命令並不是為了創建文件所用的,如果使用man指令去查看,會發現它的概述是change file timestamps,改變文件更新時間,如果文件沒有創建出來,我們是可以使用touch的形式創建的,而再次touch這個文件名,會更改他的更新時間

    # touch 文件名
    # 例如 touch file1
    

image

  • vi/vim

    使用vi/vim就是編輯一個文件,然后使用wq組合保存,如果編輯的文件是不存在的,就相當於是創建了

image

8、實時查看Linux進程信息(top

# top

實時查看Linux里面的進程信息, 對這些參數做一個簡單的解釋

  • 首先第一行從左到右依次是

    • 當前時間
    • 系統已經運行的時間
    • 當前登錄的用戶數量
    • 相應最近5、10、15分鍾的平均負載情況
  • 第二行是任務(進程)運行狀態,從我測試的雲服務器上看,一共有102個任務

  • 第三行是CPU使用情況(每秒鍾),從左到右依次是

    • user使用cpu占比
    • system使用進cpu占比
    • niced運行已調整優先級的用戶使用cpu占比
    • 空閑cpu占比
    • wait用於等待I/O完成的cpu占比
    • 處理軟件中斷的cpu使用占比
    • 用於有虛擬cpu的情況,指示被虛擬機偷掉的cpu占比
  • 接下來兩行是內存使用情況信息(第四行的物理內存,第五行是虛擬交換內存)

    • 從左到右依次代表,單位是kb
      • 總內存量
      • 空閑內存量
      • 已使用內存量
      • 緩沖內存量
  • 接下來就是實時進程信息,第一行相當於是標題頭,其描述作用,我們也來看看各個標簽的意思

    • PID :進程ID,進程的唯一標識符
    • USER:進程所有者的實際用戶名
    • PR:進程的調度優先級,有的值為rt,代表的是這些進程運行在實時態
    • NI:進程的NICE值,越小的值優先級越高,所以負值肯定是要比正值優先級要高
    • VIRT:進程使用的虛擬內存總量,單位為kb
    • RES:進程使用的物理內存總量,單位為kb
    • SHR:進程使用的虛擬內存總量,單位為kb
    • S:這個是進程的狀態(一共有6中狀態)
      • D:不可中斷的休眠
      • R:正在運行
      • S:休眠
      • T:由作業控制信息停止
      • t:在跟蹤期間被調試器停止
      • Z:僵屍狀態
    • %CPU:自從上次更新時到現在任務所使用的CPU時間百分比
    • %MEM:進程使用的可用物理內存百分比
    • TIME+:進程啟動后到現在所使用的全部CPU時間
    • COMMAND:進程所使用的命令image
  • 按照cpu使用百分比降序展示進程信息

    # top模式下,同時按shift + p
    

    image

  • 按照內存使用率降序展示進程信息

    # top模式下,同時按shift + m
    

    image

  • 默認是三秒刷新一次進程信息,也可以手動設置刷新時間

    # top模式下,按d,即可看到如下紅框,填寫你想要刷新的頻率即可,假設我想10秒刷新一次信息
    

image

9、查看文件大小(lldu

  • 可以使用ll指令,ll就是ls -l指令的縮寫,紅框處顯示的就是文件的實際大小,單位為字節

    # ll 
    

image

  • 也可以使用du指令,但是需要注意,du查看的不是文件的大小,而是顯示所有文件所占用的【塊】的大小,而Linux默認的系統分區的block size 最少為4k,所以即使文件只有1個字節,但是也會占用4k的塊大小

    # du -h *
    
    # 列出當前目錄下每個文件的占用的塊大小,其中h參數代表的用人類更加容易看懂的方式打印,單位為k,m,g
    

image

10、查找文件所在目錄(locatefind

  • locate指令需要安裝,一共就兩步

    • yum install mlocate
    • updatedb

    使用起來也很方便

    # locate xxx
    
    # /xxx你要查找的文件
    

image

  • find指令則不需要安裝,使用起來也很簡單,配合grep指令使用

    # find / | grep xxx
    

image

11、統計文件有多少行(wccat

  • 有的時候需要統計文本里面有多少行,可以借助wc指令完成

    # wc -l xxx
    
    # 其中xxx就是參看的文件,例如 wc -l /proc/cpuinfo
    

image

  • 也可以使用cat命令,加上-n參數

    # cat -n xxx
    
    # -n代表輸出內容的時候帶上行號,這不過這種方式就會把內容給打印出來
    

image

進階使用

上述的都是些簡單的操作,不過使用頻率相對是比較高的,遇到不會用的就man一下或者--help參看幫助,配合着網上的教程,還是還容易上手的;下面以一個例子來展示一下,指令組合使用的威力

統計nginx配置文件中訪問次數最多的10個ip

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10

本質上也是多個命令組合在一起使用,達成這個效果,我們來分析一下

  • awk指令,這個就牛逼了,是一個強大的文本分析工具,網上資料很多,這里就不展開說了;本例子簡單解釋一下就是從access.log日志中取第一個參數($1),因為日志中第一個參數就是我們需要的ip信息

  • sort從字面上就知道了是排序操作image

  • uniq -c從字面上的意思就是去重,uniq嘛,唯一,加上-c參數之后,就會統計行數,也就是說,這里就是去重+統計重復行數 image

  • sort -nr -k1代表按照重復行出現的次序倒序排列,-k1代表是以第一列為標准排序,因為經過上面uniq -c之后,輸出的結果是這樣子的

    image

    image

  • head -n 10就是之前講過的,取前10行

    所以組合起來就能完成這個操作了

限於本人水平有限,難免會有些紕漏,如果有發現文章那里寫的不對的,歡迎指出,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM