五分鐘掃盲:25個工作中常用的Linux命令
§基礎篇
cd 命令
??語法:cd [dirName]。
??功能:全拼change directory,從當前工作目錄切換到指定的工作目錄。dirName 表示法可為絕對路徑或相對路徑。
??說明:該命令將當前目錄改變至dirName所指定的目錄。若沒有指定dirName,則回到用戶的主目錄。為了改變到指定目錄,用戶必須擁有對指定目錄的執行和讀權限。
??常用方式示例:
- cd .. 返回上一級目錄。
- cd ~ 進入當前用戶目錄。
- cd /root/Documents # 切換到目錄/root/Documents
ls / ll 和 clear 命令
??語法:ls [選項] [目錄或是文件]
??功能:列出目錄的內容
??說明:list之意,用于查看某個目錄的內容。當未給出目錄名或是文件名時,就顯示當前目錄的信息。ll與之類似,不再贅述。
??clear:清除屏幕上的信息,清屏后,提示符移動到屏幕左上角。
??cd和ls應該是使用最多的兩個命令,尤其是對于Linux目錄結構陌生的用戶。
grep 命令 : 查找關鍵字
??語法:grep [-acinv] [--color=auto] [keyword] [文件或目錄...]
??功能:文本搜索工具,類似于正則表達式搜索,可以在一個大的文件中快速搜索到滿足一定規則的內容,查到就高亮顯示。
??說明:Global Regular Expression Print 的縮寫,分析一行的信息,若當中有我們所需要的信息,就將該行顯示出來,該命令通常與管道命令一起使用,用于對一些命令的輸出進行篩選加工等等。
例如,取出文件/etc/man.config中包含MANPATH的行,并把找到的關鍵字加上顏色
grep --color=auto 'MANPATH' /etc/man.config
find命令
??語法:find [PATH] [option] [action]
??功能:多用于查找文件路徑。
??說明:常用的是-name fileName 找出文件名為fileName的文件。
??案例一:搜索Data目錄下以點fna結尾的文件,
find ../Data -name *.fna
??案例二:查找大于100M的文件;
find ./ -size 100M
??案例三:查找 48 小時內修改過的文件,可以分分鐘確認關鍵文件是否被修改
find -atime -2
??案例四:查找關鍵詞keyword在哪個目錄:
find -name "keyword"
kill
??語法:kill -signal PID。
??功能:啟動或者結束進程,PID可以通過ps命令、管道命令加上grep命令進行篩選獲得。
??說明:該命令用于向某個工作(%jobnumber)或者是某個PID(數字)傳送一個信號,它通常與ps和jobs命令一起使用.
??signal的常用參數如下:
- 1:SIGHUP,啟動被終止的進程
- 2:SIGINT,相當于輸入ctrl+c,中斷一個程序的進行
- 9:SIGKILL,強制中斷一個進程的進行(常用)
- 15:SIGTERM,以正常的結束進程方式來終止進程
- 17:SIGSTOP,相當于輸入ctrl+z,暫停一個進程的進行
注:最前面的數字為信號的代號,使用時可以用代號代替相應的信號。例如:
以正常的結束進程方式來終于一個后臺工作(pid = 2821)
kill -15 2821
tail
??語法:tail [options] [fileName]
??功能:查看文件的內容。
??說明:有一個常用的參數 -f 常用于查閱正在改變的日志文件。
參數-n<行數> 顯示文件的尾部 n 行內容。例如:
tail -f fileName # 把 fileName 文件里的最尾部的內容顯示在屏幕上,并且不斷刷新。
tail -500f fileName # 在屏幕上顯示 fileName 文件里尾部500行的內容,且不斷刷新。
cp命令
全拼copy,其功能為復制文件或目錄。
??語法:cp [選項] 源文件或目錄 目標文件或目錄。
??功能:把指定的源文件復制到目標文件或把多個源文件復制到目標目錄中。
??說明:為防止用戶在不經意的情況下用cp命令破壞另一個文件,如用戶指定的目標文件名已存在,用cp命令拷貝文件后,這個文件就會被新源文件覆蓋,因此,建議用戶在使用cp命令拷貝文件時,最好使用i選項。
mv命令
??語法:mv [選項] 源文件或目錄 目標文件或目錄。
??功能:用戶可以使用mv命令來為文件或目錄改名或將文件由一個目錄移入另一個目錄中。
??說明:視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),它將所給的源文件或目錄重命名為給定的目標文件名。
案例:將文件 test.log 重命名為 test1.txt
mv test.log test1.txt
rm命令
??語法:rm [選項] 文件…
??功能:刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除。
??說明:對于鏈接文件,只是斷開了鏈接,原文件保持不變。
mkdir命令
??語法:mkdir [-p] dirName。
??功能:創建一個名為dirName的子目錄。
??說明:-p 確保目錄名稱存在,不存在的就建一個。
rmdir 命令
??語法:rmdir [選項] dir-name
??功能:刪除空目錄。
cat 命令
??語法:cat fileName。
??功能:查看文本文件的內容,后接要查看的文件名。
??說明:通常可用管道與more和less一起使用,從而可以一頁頁地查看數據。例如:cat text | less # 查看text文件中的內容
pwd 命令
??語法:pwd
??功能:顯示當前工作目錄的絕對路徑。
??說明:全拼print working directory。在Linux層次目錄結構中,用戶利用cd命令可以從一個目錄轉換到另一個目錄,然而,沒有提示信息告知用戶目前處于哪一個目錄中。要想知道當前所處的目錄,可以使用pwd命令,它顯示整個路徑名。
gzip和unzip命令
??語法:gzip/unzip [選項] 待壓縮的文件名 或者 unzip [選項] 壓縮文件名.zip。
??功能:前者用于壓縮,后者用于解壓。
??說明:減少文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間。
ping 命令 : 檢測主機
??執行 ping 指令會使用 ICMP 傳輸協議,發出要求回應的信息,若遠端主機的網絡功能沒有問題,就會回應該信息,因而得知該主機運作正常。
??語法:ping [-c] [主機名稱或IP地址]
-c<完成次數> 設置完成要求回應的次數。
telnet 命令 : 端口是否可訪問
??語法:telnet [主機名稱或IP地址<通信端口>]
??雖然 Linux telnet 命令主要用于遠端登入。執行 telnet 指令開啟終端機階段作業,并登入遠端主機,但是我更經常用它來查看某個遠端主機端口是否可訪問。

| 管道命令
??通常情況下,我們在終端只執行一條命令,那么如何執行多條命令呢?使用管道命令。管道是一種通信機制,通常用于進程間的通信(也可通過 socket 進行網絡通信),它表現出來的形式將前面每一個進程的輸出(stdout)直接作為下一個進程的輸入(stdin)。
ps 命令
??語法:ps [options]
??功能:查看當前進程 (process) 的狀態。
??options:-e 顯示所有進程,-f 全格式。
??說明:英文全拼是process status。列出當前正在運行的程序,連帶命令行
ps -ef
??那如何定位我們想要查看的進程A,這個時候需要結合管道命令和grep,即 ps -ef | grep A。例如,查看是否已經有tomcat在運行:
ps -ef | grep tomcat
watch
??語法:watch [參數] [指令]
??功能:動態查看指令執行的結果
??說明:以周期性的方式執行給定的指令,指令輸出以全屏方式顯示。
- 比如如果需要每隔一秒高亮顯示網絡連接數的變化情況。則
watch -n 1 -d netstat -ant
- 每隔一秒高亮顯示http連接數的變化情況
watch -n 1 -d 'pstree | grep http'
- 十秒一次輸出系統的平均負載
watch -n 10 'cat /proc/loadavg'
diff
??語法:diff -c file1 file2
??功能:顯示兩個文件的差異
§進階篇
??部署在Linux系統的服務出現性能問題,一般可以通過 top、iostat、free、vmstat和ifstat等命令來初步定位問題,下面就聊聊這幾位寶貝。
top 及其精簡版uptime
??語法:top [options] / uptime
??功能:實時顯示 process 的動態,查看機器整體性能。然后,按數字“1”可監控每個邏輯CPU的狀況。如果不按1,則在top視圖里面顯示所有cpu的平均值。
??說明:常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況。重點看load average、%CPU和%MEM三個指標。
top - 18:17:22 up 8:52, 1 user, load average: 0.05, 0.04, 0.05
Tasks: 99 total, 2 running, 97 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 739932 total, 353944 free, 125284 used, 260704 buff/cache
KiB Swap: 1044476 total, 1044476 free, 0 used. 459304 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
47 root 20 0 0 0 0 S 0.1 0.0 0:36.55 kworker/0:1
643 root 20 0 21668 1284 972 S 0.1 0.2 0:18.13 irqbalance
1668 root 20 0 0 0 0 S 0.1 0.0 0:01.08 kworker/1:1
1 root 20 0 127968 6480 4096 S 0.0 0.9 0:01.93 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.23 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.02 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 R 0.0 0.0 0:01.95 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
??第一行,任務隊列信息,與 uptime 命令的執行結果一模一樣。
系統時間:18:17:22
運行時間:up 8:52 min,
當前登錄用戶: 1 user
負載均衡 load average: 0.05, 0.04, 0.05
??load average后面的三個數分別代表1分鐘、5分鐘和15分鐘的負載情況,是每隔5秒鐘檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高于5的時候就表明系統在超負荷運轉了。sum(三個值)/3\*100%>60% 同樣表明系統在超負荷運轉了。
??第七行以下:各進程(任務)的狀態監控
PID — 進程id
USER — 進程所有者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S —進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
%CPU — 上次更新到現在的CPU時間占用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)
top -pid 4712 指定進程 id后顯示 process 的動態
vmstat
??語法:vmstat
??功能: 查看磁盤空間
??說明:是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的進程、虛擬內存、CPU活動進行監控。主要看首位兩個參數proce和cpu。
??示例:vmstat -n 2 3 每兩秒采樣一次,共采樣三次:

??CPU:
- us 用戶進程消耗CPU時間百分比。我曾經在一個做加密解密很頻繁的服務器上,可以看到us接近100,r運行隊列達到80(機器在做壓力測試,性能表現不佳)。us值越高,用戶消耗CPU時間越多,如果長期大于50%,則需要優化系統。
- sy 內核進程消耗CPU時間百分比。如果太高,表示系統調用時間長,例如是IO操作頻繁。
- id 空閑 CPU時間,一般來說,id + us + sy = 100。
??通常我認為id是空閑CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。
??Procs(進程):
- r: 運行隊列中進程數量,就是說多少個進程真的分配到CPU。
- b: 等待IO的進程數量。
?? 查詢所有CPU信息:
mpstat -P ALL 2

??idle CPU空閑率,超過80%說明性能可以,低于的話就要優化系統了。每個進程使用 cpu 的用量分解信息:
pidstat -u 1 -p 進程編號

free
??語法:free [-bkmotV][-s <間隔秒數>]
??功能:顯示Linux系統中物理內存、交換內存的使用統計信息。
free -s 10 //每10s 執行一次命令
查看額外信息: pidstat -p 進程號 -r 采樣間隔秒數
df
??語法:df [選項] [dirName]
??功能:統計磁盤使用情況,顯示磁盤可用空間容量信息及空間結點信息。
??說明:英文全拼是disk free。一般加一個-h選項,然后接要查看的磁盤,默認所有磁盤。
??用法1:df 表示查看磁盤空間時以字節方式顯示空間總大小和剩余空間。
??用法2:df -h 表示查看磁盤空間時以KB、MB、GB等單位方式顯示剩余和總空間大小,比較常用的方式。溫馨提示,常用選項-h 是human-readable的縮寫,功能是使用我們更易讀的格式,將文件或者消耗容量以(GB,kB等)列出來。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 5.5T 742G 4.7T 14% /
devtmpfs 126G 0 126G 0% /dev
??輸出信息中,Filesystem表示文件系統(可以理解為分區),Size表示總空間,Used(表示已使用的空間),Avail(表示剩余空間),Use%(表示已使用空間的百分比),Mounted on(表示掛載點或磁盤掛載對應的目錄路徑)
iostat 磁盤IO
??語法:iostat
??功能:監控系統設備的IO負載情況
??說明: I/O statistics 是輸入/輸出統計的縮寫。特點是匯報磁盤活動統計情況,同時也會匯報出CPU使用情況。
??如果 %iowait 的值過高,表示硬盤存在I/O瓶頸。%idle值高說明CPU較空閑,如果%idle值高但系統響應慢時,有可能是CPU等待分配內存,此時應先排查應用程序,如果不存在問題,則加大內存容量。%idle值如果持續低于10,那么系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。
Linux 遠程登錄
??介紹點遠程登錄的基礎知識,溫故知新。
??Linux 服務器遠程登錄常用客戶端工具:Putty和XShell(推薦)。
??使用sftp客戶端安裝連接sftp服務器,來上傳和下載安裝包常用客戶端工具:Winscp(推薦)和xftp。
小結
??以上只是日常運維工作需要基本掌握的一些命令,有了它們可以完成絕大部分的工作。當然,技不壓身,如果掌握更多的命令可以更高效地完成工作。
Reference
Buy me a coffee. ?Get red packets.
浙公網安備 33010602011771號