
(一)Linux監控的幾個常用命令(對于服務器后端程式猿很重要,必須掌握):
| 命令 | 功能 | 命令 | 功能 |
| iostat | 統計CPU及網路、設備和磁區IO的資料 | vmstat | 展示給定時間服務器的狀態值(包括CPU使用率、記憶體使用狀況、虛擬記憶體交換情況、IO讀寫情況),很常用 |
| free | 顯示記憶體狀況,包括空閑以及被使用的物理記憶體、交換記憶體以及被kernel使用的緩沖區 | sar | System Activity report 系統活動報告,是目前Linux最為全面的系統性能分析工具之一 |
| ps | 顯示當前正在運行的所有行程的快照 | strace | 跟蹤行程執行時系統調和所接收的信號 |
| top | 實時顯示系統中各個行程的資源(cpu和load)占用狀況,類似于windows任務管理器 | tcpdump |
dump the traffic on a network, 根據用戶定義對網路上的包進行截獲的包分析工具, 功能和查看pcap包的wireshark工具差不多 |
轉載請注明出處:https://www.cnblogs.com/NaughtyCat/p/most-useful-linux-command-in-work.html
- iostat
統計CPU及網路、設備和磁區IO的資料,具體命令列引數見下表:
| 選項 | 含義 |
| -d | 顯示設備(磁盤)使用狀態 |
| -k | 某些使用block為單位的列強制使用kilobytes/每秒 |
| -x | 顯示更多統計資訊 |
| -c | 顯示CPU利用率 |
輸入"iostat -x”,結果如下圖:

avg-cpu統計資訊每段含義見下表(作者【CoderBaby】):
| 引數 | 含義 |
| %user | 在用戶態運行程式,CPU利用的百分比 |
| %nice | 在nice優先級(即靜態優先級,具體啥含義請百度) |
| %system | 在內核態運行程式,CPU利用的百分比 |
| %iowait | 特別重要 — show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request |
| %steal |
虛擬CPU等待的百分比 — Show the percentage of time spent in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing another virtual processor |
| %idle | CPU 空閑的比列,CPU沒有IO請求需要處理 — 和 %iowait含義相反 |
設備(device)輸出結果每段含義詳細說明見下表:
| 引數 | 含義 |
| rrqm/s |
每秒這個設備相關的讀取請求有多少被merge了, 當系統呼叫需要讀取資料的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的資料,FS會將這個請求合并Merge |
| wrqm/s | 每秒這個設備相關的寫入請求有多少被merge了 |
| r/s | The number of read requests that were issued to the device per second |
| w/s | The number of write requests that were issued to the device per second |
| rsec/s | 每秒讀取的扇區數 |
| wsec/s | 每秒寫入的扇區數 |
| avgrq-sz | |
| avgqu-sz | |
| await | 每一個IO請求的處理的平均時間(單位是毫秒) |
| svctm | |
| %util |
在統計時間內所有處理IO時間,除以總共統計時間,例如,如果統計間隔1秒,該設備有0.8秒在處理IO, 而0.2秒閑置,那么該設備的%util = 0.8/1 = 80%,所以該引數暗示了設備的繁忙程度, 一般地,如果該引數是100%表示設備已經接近滿負荷運行了 (當然如果是多磁盤,即使%util是100%,因為磁盤的并發能力,所以磁盤使用未必就到了瓶頸), |
參考 iostat(1) - Linux man page
- ps
- grep
- top
實時顯示系統中各個行程的資源占用狀況,類似于windows任務管理器,默認3秒鐘重繪一次,太快了,看不過來,-d 可以指定,多少時間更新一次
具體命令列引數說明見下表:
| 選項 | 含義 |
| -a | 按照記憶體使用率排序 |
| -d | 設定多長時間(以秒為單位)重繪一次結果 |
| -p <pid> | 查看指定行程ID的資訊 |
| -u <username> | 查看指定用戶名的資訊 |
| -i | 不顯示任何閑置 (idle) 或僵尸 (zombie) 的行程 |
| -n iterations | 指定更新多少次資訊后終止 |
| -c | 顯示完整命令,如mysql會顯示 “/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql” |
| -s | 安全模式 |
| -S | 累積時間模式,開啟此模式,會列出該行程及它已經死掉的子行程所使用的CPU時間 |
例如,“top -d 30” —— 30秒重繪一次(默認按cpu占用率排序),結果如下圖:

輸出結果前5行(統計的整體資訊)的每一段的含義如下表所示:
| 行 | 段1含義 | 段2含義 | 段3含義 | 段4含義 | 段5含義 | 段6含義 | 段7含義 | 段8含義 |
| 1 - top | 13:43:10 - 當前時間 | up 4:21 - 系統運行時間,格式為"時:分" | 1 user - 當前登錄用戶數 |
load average: 0.01, 0.04, 0.01 - 系統負載,即任務佇列的平均值 三個數值依次為"1分鐘5分鐘 15分鐘”到目前的平均值 |
||||
| 2 - Tasks | 1012 total - 行程總數 | 1 running - 正在運行的行程數 | 1095 sleeping - 睡眠的行程數 | 6 stopped - 停止的行程數 | 0 zombie - 僵尸行程數 | |||
| 3 - Cpu(s) | 0.8%us - 用戶空間占用CPU百分比 | 0.1%sy - 內核空間占用CPU百分比 | 0.0%ni - 用戶行程空間改變過優先級的占CPU百分比 | 99.2%id - 空閑CPU百分比 | 0.0%wa - 等待輸入輸出的CPU百分比 | 0.0%hi - | 0.0%si - | 0.0%st - |
| 4 - Mem | 132173688k total - 物理記憶體總量 | 38002800k used - 已使用的物理記憶體總量 | 94170888k free - 空閑記憶體總量 | 208420k buffers - 用于內核快取的記憶體總量 | ||||
| 5 -Swap | 4194600k total - 交換區總量 | 0k used - 已使用的交換區總量 | 4194300k free - 空閑交換區總量 | 2624596k cached - 緩沖的交換區總量 |
在top命令模式下,按“f”鍵,會顯示每個column的詳細資訊,如下圖:

每一列的含義翻譯成中文如下表所示:
| 列名 | 含義 |
| PID | 行程ID |
| USER | 用戶名 |
| PR | 行程優先級 |
| NI | nice value,不知道怎么翻譯好 |
| VIRT | 行程使用的虛擬記憶體總量(kb) |
| RES | 行程使用的、未被換出的物理記憶體大小 |
| SHR | 共享記憶體大小(kb) |
| S | 行程狀態,D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵尸行程 |
| %CPU | 上次更新到現在的CPU時間占用百分比 |
| %MEM | 行程當前使用的可被共享的記憶體容量 |
| TIME+ | task自啟動以來,累計占用cpu時間,精確到百分之一秒 |
| COMMAND | 命令列或者程式名 |
- free
顯示空閑和使用的記憶體資訊,命令引數選項如下表:
| 選項 | 含義 |
| -b -k -m -g | 單位分別為bytes, KB, MB, G |
| -h | 人類可讀(即自動以MB,G等為單位顯示) |
| -t | 額外顯示總數 (RAM + swap) |
| -o (old format) | 不會顯示 -/+ buffers/cache 這行資訊 |
輸入“free -m”,以M為單位,便于精確計算講解,結果如下圖:

輸出結果具體每行每列的含義詳見下表:
| 行 | total | used | free | shared | buffers | cached |
| Mem: | 記憶體總數 (total = used + free) | 已經使用的記憶體數量 | 空閑記憶體數量 | 共享記憶體數量,據說已經廢棄不用 | 緩沖記憶體數量 | 快取記憶體數量 |
| -/+ buffers/cache: |
(- buffers/cache) used —— 反映的是被程式實實在在吃掉的記憶體 使用的記憶體數 = 第一行即Mem行的 “used - buffers - cached” = 34562 - 87 - 1322 = 33151M |
(+ buffers/cache) free —— 反映的是可以挪用的記憶體總數 空閑記憶體數 = 第一行即Mem行的 “free + buffers + cached” = 94513 + 87 + 1322 = 95922M 差2M不知道哪里來的 |
||||
| swap: (交換區) | 交換區記憶體總數 | 交換區已使用記憶體數 | 交換區空閑記憶體數 |
- sar
System Activity report 系統活動報告,是目前Linux最為全面的系統性能分析工具之一
- vmstat
- tcpdump
dump the traffic on a network, 根據用戶定義對網路上的包進行截獲的包分析工具,tcpdump可以將網路傳輸的資料包的“頭”完全截獲下來以供分析,它支持針對網路層、協議、主機、網路或埠的過濾,并提供and、or、not等邏輯陳述句來幫助你去掉無用資訊,直接啟動tcpdump將監視第一個網路介面上所有流過的資料包,抓取100個包的命令“tcpdump -c 100”,結果如下圖:

具體命令列引數詳見下表:
| 選項 | 含義 |
| -i <網卡號或稱之為網路介面> | 監聽指定網卡(又稱網路介面)的資料包,如tcpdump -i eth0(監聽第一個網路介面,etho也是默認監聽的網卡,第一個嘛) |
| tcpdump -i etho dst host hostname | 監視所有發送到主名為hostname的網路資料包(dst — 目的地,通過默認網卡) |
| tcpdump -i etho src host hostname | 截獲主機名為hostname所發送的所有資料(src — 源,通過默認網卡) |
| tcpdump ip host 210.27.48.1 and !210.27.48.2 | 獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的網路包 (!—— 取反,即非的意思嘛) |
(二)基本簡單命令
串列匯總基本命令:
| 命令 | 功能 | 命令 | 功能 | 命令 | 功能 |
| ls | 查看當前目錄下有哪些檔案和檔案夾 | whereis | 查找可執行的軟體命令在哪里 | clear/reset/ CTRL + l | 清屏——切換到下一個新的螢屏 |
| pwd | 顯示當前目錄的完整路徑 | cd | 改變所在目錄 | vi | 文本編輯器 |
| cat | 輸出檔案的內容到螢屏 | mkdir | 創建目錄 | vim | 程式編輯器 |
| sh | 執行shell腳本 | rmdir | 洗掉目錄 | kill | 殺死行程 |
| yum | 軟體包管理器 | mv | 移動檔案 | ifconfig | 顯示或者設定網路設備 |
| sudo | 以系統管理員的身份執行指令,類似于windows CMD,右鍵選擇"以管理員身份運行“” | rm | 洗掉檔案 | cal | 日歷 |
| df | 查看磁盤使用情況 | cp | 復制檔案 | date | 日期 |
| stat | 顯示檔案或者檔案系統的狀態 | touch | 更新檔案的訪問時間和修改時間,如果不存在,則創建之 | bc | 計算器 |
linux命令的常識:
(1)大小寫敏感,如 "top"可以識別,"Top" 則comand not found
(2)-h (部分命令支持,如沖突則不支持)和 --help(大多數命令支持),查看命令幫助資訊,如 rmdir --help,提示“ rmdir [OPTION]... DIRECTORY..”
(3)命令有縮寫和全拼兩種格式,如 rmdir 的"-p" <=> "--parents"
(4)CTRL + C ,exit 當前正在執行的命令;CTRL + Z , stop 當前正在執行的命令
(5)命令格式說明,“【】”括起來表示選項可選,接下來緊跟的詳細引數,如ls命令說明:“ls [OPTION]... [FILE]...”
(6)可通過“|”進行命令拼接,如“ps -ef | grep java | grep -v grep”
(7)linux 命令或者引數在輸入1個或2個字符后,按Tab鍵,會列出可選命令和引數,如果輸入3個或者4個字符,可查找出唯一的命令和引數,將自動補全
(8)鍵盤“PgUp”和“PgDn"及 鍵盤“↑”和“↓” 可以切換到上一個或者下一個已輸入的命令;按鍵“←” 和“→” ,可以在命令里左右移動游標;按鍵“Home” 和“End” 可以跳轉到命令的第一個字符和末尾
(8)linux里所有東西都被當做檔案,不像windows有硬體設備的概念,如磁盤、CPU等,所以你裝的所有軟體,如mysql等都是檔案
(9)man (manual,手冊) + Command,有更詳細的命令說明
詳細論述:
- ls
查看當前目錄下有哪些檔案及檔案夾,具體命令列引數說明見下表:
| 常用選項 | 含義 |
| -l | 一行顯示一個檔案或者檔案夾,并顯示諸如檔案大小、檔案最后修改時間、owner等資訊 |
| -a | 列出所有檔案及檔案夾,包括隱藏檔案 |
| -R | 把子檔案夾下的檔案也全部列出來,可以“ls -R -l”組合用 |
| -S | 按檔案大小倒敘列出所有檔案 |
| -h | 以人類可讀的形式列出檔案大小(K,M,G) |
如在 linux的根目錄下,輸入“ls”,結果如下圖:

如果是在包含有檔案的目錄下,輸入“ls”,比如在root下,則會包含檔案如 “install.log” 及檔案夾 “Music” 等等,結果如下圖:

組合命令,“ls -S -h -l”,結果如下圖:

- 查看埠占用情況(對于connect refused 問題很管用)
netstat -an | grep 8000 (查看 8000埠的使用情況)
- pwd
顯示當前的完整路徑名,如下圖:

- cd
切換當前目錄,具體語法: cd [dirName],具體命令列引數說明見下表:
| 選項 | 含義 |
| .. | 切換到父級目錄 |
| / | 切換到根目錄 |
| ~ | 切換到home根目錄 |
- 查看cpu
cat /proc/cpuinfo — 有多少內核處理器就有多少條資訊,如下:

- 查看記憶體資訊
cat /proc/meminfo (/proc下面有很多關于本機系統及設備的資訊,均可如法炮制),如下圖:

- whereis
查找命令—具體語法: whereis [ -sbmu ] [ -SBM dir ... -f ] name...,例如"whereis mysql",結果如下圖:

- cat
輸出檔案內容到終端,例如“cat install.log”,結果如下圖:

- sh
- ifconfig
顯示或者設定網路設備,輸入“ifconfig”, 結果如下圖(可以看到自己的ipv4 、ipv6 地址等資訊):

- kill
- rm
- mv
- cp
- touch
更新檔案的訪問時間和修改時間,如果檔案不存在,則創建之,如我在root根目錄,“touch test2019.txt”,檔案不存在則創建之,效果如下圖:

- mkdir
創建目錄,
- rmdir
- df
- vi 及vim
- yum
- sudo
- stat
顯示檔案或者檔案系統的狀態,具體語法: stat [OPTION]... FILE...,例如“stat a.txt”, 結果如下圖:

- bc
內置計算器,"bc -q" 不會輸出關于bc軟體的一些資訊,直接用(回車輸出結果),如下圖:

- cal
日歷
- date
日期—具體語法: date [OPTION]... [+FORMAT],例如“date ‘+%Y % m%d %H %m’”,輸出當期日期的年月日、時、分,結果如下圖:

附注:
- IBM real word linux
- 菜鳥教程之Linux命令大全
- 鳥哥的私房菜之基礎篇
未完待續,空了接著完善
*****************************************************************************************************
精力有限,想法太多,專注做好一件事就行
- 我只是一個程式猿,5年內把代碼寫好,技術博客字字推敲,堅持零拷貝和原創
- 寫博客的意義在于鍛煉邏輯條理性,加深對知識的系統性理解,鍛煉文筆,如果恰好又對別人有點幫助,那真是一件令人開心的事
*****************************************************************************************************
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/160745.html
標籤:Linux
上一篇:CentOS 8 安裝
