1. tail
tail
命令的功能是查看文件內容的末尾幾行,默認10行。這個命令在查看線上 log 時使用頻率是最高的,其比較重要的參數選項如下:
-n : 其後接 數字N 表示指定顯示末尾的 N 行
-f :追蹤顯示文件的更新,使用這個指令後終端會停駐在這裏,等待文件更新再顯示出新內容。通常用於查看日誌,
持續顯示新加入的內容,也可用 tailf 替代
2. zgrep
zgrep
的功能是在壓縮文件中尋找匹配的正則表達式,用法和grep
命令近乎完全一致。這個命令存在的價值在於線上 log 的大小到達一定閾值的時候都會被壓縮處理,這時候將其解壓出來再過濾顯然是不現實的。
另外zgrep/grep
默認是只過濾出帶有匹配字符的那一行內容,這在排查線上問題的時候是非常不便的,因爲我們通常需要錯誤 log 附近的其他 log 共同判斷問題所在。這個需求可以通過指定 -C
參數實現,常用的命令組合如下:
過濾當前目錄下所有壓縮文件,找出帶有關鍵字 error 的那一行log及其前後 10 行的內容
zgrep -niC10 error ./*
3. lsof
顯示打開文件的列表,可用於查看端口占用 lsof -i :49172
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
idea 85040 nathan.yang 949u IPv4 0x592f1a341f736e8b 0t0 TCP localhost:49172 (LISTEN)
較重要的列信息的意義如下:
COMMAND:進程的名稱
PID:進程標識符
USER:進程所有者
FD:文件描述符,應用程序通過文件描述符識別該文件
其參數列表如下:
參數 | 功能 |
---|---|
-a | 列出打開文件存在的進程 |
-c<進程名> | 列出指定進程所打開的文件 |
-g | 列出GID號進程詳情 |
-d<文件號> | 列出佔用該文件號的進程 |
+d<目錄> | 列出目錄下被打開的文件 |
+D<目錄> | 遞歸列出目錄下被打開的文件 |
-n<目錄> | 列出使用NFS的文件 |
-i<條件> | 列出符合條件的進程(4、6、協議、:端口、 @ip ) |
-p<進程號> | 列出指定進程號所打開的文件 |
-u | 列出UID號進程詳情 |
4. tar
tar
命令用於打包或者解壓文件,需注意打包
是指將一大堆文件或目錄變成一個總的文件,壓縮
則是將一個大的文件通過一些壓縮算法變成一個小文件。區分這兩個概念的原因在於Linux 中很多壓縮程序只能針對一個文件進行壓縮,這樣當想要壓縮一大堆文件時,必須先將這一大堆文件先打成一個包(tar命令),然後再用壓縮程序進行壓縮
。常用的壓縮/解壓命令有zip/unzip
gzip/gunzip
tar
的常用命令組合及參數表如下
壓縮:tar -zcvf destName.tar.gz srcFile
解壓:tar -zxvf srcName.tar.gz
參數 | 功能 |
---|---|
-A或–catenate | 新增文件到已經存在的備份文件 |
-B | 設置區塊大小 |
-c或–create | 建立新的備份文件 |
-C <目錄> | 這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項 |
-d | 記錄文件的差別 |
-x或–extract或–get | 從備份文件中還原文件 |
-t或–list | 列出備份文件的內容 |
-z或–gzip或–ungzip | 通過gzip指令處理備份文件 |
-Z或–compress或–uncompress | 通過compress指令處理備份文件 |
-f<備份文件>或–file=<備份文件> | 指定備份文件 |
-v或–verbose | 顯示指令執行過程 |
-r | 添加文件到已經壓縮的文件 |
-u | 添加改變了和現有的文件到已經存在的壓縮文件 |
-j | 支持bzip2解壓文件 |
-v | 顯示操作過程 |
-l | 文件系統邊界設置 |
-k | 保留原有文件不覆蓋 |
-m | 保留文件不被覆蓋 |
-w | 確認壓縮文件的正確性 |
-p或–same-permissions | 用原來的文件權限還原文件 |
-P或–absolute-names | 文件名使用絕對名稱,不移除文件名稱前的“/”號 |
-N <日期格式> 或 --newer=<日期時間> | 只將較指定日期更新的文件保存到備份文件裏 |
–exclude=<範本樣式> | 排除符合範本樣式的文件 |