目錄
- 一、網絡管理命令
- 1. 查看和配置網絡設備:ifconfig
- 1)重啟網絡命令
- 2)重啟網卡命令
- 2. 查看與設置路由:route
- 3. 追蹤網絡路由:traceroute
- 4. 查看端口信息和使用情況
- 1)netstat 命令
- 2)lsof 命令
- 二、進程管理命令
- 1. 顯示當前系統進程狀態:ps
- 2. 顯示系統性能信息和進程信息:top
- 1)系統總體信息
- 2)進程信息列表
- 3)top 命令常用快捷鍵
- 4)top 命令常用參數
- 3. 向進程發送信號:kill
- 1)常用信號
- 2)常用用法示例
- 3)pkill 命令
- 4. 管理定時任務:crontab(了解)
- 1)常用選項和命令
- 2)crontab 文件格式與字段值說明
- 3)示例
- 5. 繼續運行命令:bg
- 6. 重啟 / 關閉 Linux 系統
- 補充
- 1. 查看物理內存:free
- 1)常用選項
- 2)輸出字段說明
- 3)總結
一、網絡管理命令
【第11章 Linux的網絡管理】
1. 查看和配置網絡設備:ifconfig
當網絡環境發生改變時可通過 ifconfig
命令對網絡進行相應的配置,只有 root 權限才可以配置網絡。
1)重啟網絡命令
service network-manager restart
or sudo systemctl restart NetworkManager
以下兩種重啟網絡的指令可能會有如下圖所示錯誤:
-
sudo /etc/init.d/networking restart
-
sudo service networking restart
2)重啟網卡命令
-
重啟網卡:
sudo ifconfig ens33 up
,其中 ens33 是網卡名。 -
修改 ens33 的 IP :
sudo ifconfig ens33 xxx.xxx.xxx.xxx
2. 查看與設置路由:route
命令:route -n
,當網絡不通時,通過執行 route 查看路由,查看網關配置是否正確。
3. 追蹤網絡路由:traceroute
Linux 的 traceroute
和 Windows 的 tracert
都是用于網絡路由追蹤的命令,主要作用是顯示從本機到目標主機之間經過的路由節點(路由器)列表,分析網絡路徑和故障點。
相同點:
-
目的相同:追蹤數據包從源頭到目標之間經過的路由路徑。
-
原理相似:通過發遞遞增 TTL(生存時間,Time To Live)值的報文,使路由器返回超時的響應包,從而獲得每一跳的信息。
不同點:
項目 | (Linux)traceroute | (Windows)tracert |
---|---|---|
默認協議 | UDP 數據包(默認) | ICMP 回顯請求包(默認) |
參數用法 | 選項豐富,支持多種協議和參數 | 參數較少,功能更簡單 |
輸出格式 | 通常顯示每一跳三個時間(RTT),有些系統支持更多 | 顯示每跳三個往返時間 |
兼容性 | 需要安裝(大部分發行版自帶) | Windows 自帶 |
高級功能 | 支持 TCP、ICMP、UDP 等多種協議作為探測包 | 主要使用 ICMP |
總結:
-
Linux 下的 traceroute 功能更靈活,可以通過參數選擇不同的協議。
-
Windows 的 tracert 更簡單,默認用 ICMP ,更適合普通用戶快速診斷。
使用示例:
Linux:(bash)
traceroute www.baidu.com
traceroute -I www.baidu.com # 使用 ICMP
traceroute -T www.baidu.com # 使用 TCP(有些版本不支持)
Windows:(cmd)tracert www.baidu.com
4. 查看端口信息和使用情況
1)netstat 命令
netstat(network statistics)是一個用于顯示網絡連接、路由表、接口統計等信息的命令行工具,廣泛用于網絡故障排查和流量監控。
基本語法:netstat [選項]
參數:
選項 | 作用說明 |
---|---|
-a | 顯示所有連接和監聽端口,包括 TCP 和 UDP |
-t | 只顯示 TCP 連接 |
-u | 只顯示 UDP 連接 |
-n | 顯示數字形式的地址和端口號(不進行域名解析) |
-l | 只列出監聽狀態的 socket |
-p | 顯示使用該連接的程序的進程 ID 和進程名(需要 root 權限) |
-r | 顯示路由表 |
-i | 顯示網絡接口列表 |
-s | 按協議顯示統計信息 |
-c | 每隔一段時間重復顯示上述內容(用于動態監控) |
-e | 顯示擴展的網絡接口信息 |
如何查看機器的網絡狀態?用 netstat -an
命令顯示網絡連接的狀態信息,以查看端口狀態。比如查看 TCP 或 UDP 使用的端口情況,使用命令:netstat -an|grep tcp
or netstat -an|grep udp
,它的輸出內容通常包含以下列:
列名 | 含義 |
---|---|
Proto | 協議類型 |
Local Address | 本地 IP 地址和端口號 |
Foreign Address | 遠程 IP 地址和端口號 |
State | 連接狀態,表示該 TCP 連接的當前狀態 |
State(狀態)是顯示當前的連接狀態,又分為:
-
LISTENING :正在監聽連接請求
-
ESTABLISHED :連接已建立
-
SYN_SENT :客戶端已發送SYN請求,等待響應
-
SYN_RECEIVED :收到SYN請求,等待確認
-
FIN_WAIT_1,FIN_WAIT_2,CLOSE_WAIT,TIME_WAIT 等:表示連接關閉過程的不同階段
-
CLOSED :連接關閉
【注】:查看進程信息時需要 root 權限,否則相關信息可能無法顯示。
2)lsof 命令
lsof(List Open Files)用于列出當前系統中打開的文件信息。它不僅能列出普通文件,還可以顯示打開的網絡連接、管道、設備等,因此常用于系統和網絡故障排查。
基本語法:lsof [選項] [文件或目錄或用戶...]
參數:
選項 | 作用說明 |
---|---|
-i | 顯示所有網絡連接(網絡文件),可以加協議或端口過濾,例如 -i tcp 或 -i :80 |
-i4 / -i6 | 只顯示 IPv4 或 IPv6 的網絡連接 |
-p <PID> | 顯示指定進程 ID 打開的所有文件 |
-u <user> | 顯示某個用戶打開的文件 |
-c <command> | 只顯示指定命令名對應進程打開的文件 |
-t | 只輸出 PID ,常用于腳本中過濾 |
-n | 不解析網絡地址成主機名,直接顯示 IP |
-P | 不解析端口名為服務名,直接顯示端口號 |
+D <目錄> | 遞歸查找指定目錄下被打開的文件 |
+L1 | 僅顯示鏈接數超過 1 的文件 |
-r <秒數> | 每隔指定秒數重復執行命令,用于動態監控 |
-s | 顯示文件大小 |
-F <輸出選項> | 以指定格式輸出,用于腳本應用 |
比如查看指定端口的所有連接,即查看哪個進程使用了這個端口,輸入命令:sudo lsof -i [tcp/udp]:[指定端口號]
即可查看。
【注】:
-
有些信息需要 root 權限查看,比如查看其他用戶進程打開的文件,通常需要用 sudo 。
-
lsof 能反映系統中非常詳細的 “打開文件” 情況,包括網絡端口、管道、設備文件,非常強大。
二、進程管理命令
【第10章 Linux的進程管理】
命令 | 含義 |
---|---|
ps | 查看系統中的進程 |
top | 動態顯示系統中的進程 |
kill | 向進程發送信號(包括后臺進程) |
crontab | 用于安裝、刪除或者列出用于驅動 cron 后臺進程的任務 |
bg | 將掛起的進程放到后臺執行 |
1. 顯示當前系統進程狀態:ps
ps [選項]
命令可以幫助用戶查看進程的詳細信息,包括進程號、發起者、CPU 和內存使用情況等。常用選項包括:
選項 | 作用說明 |
---|---|
aux | 顯示所有進程的詳細狀態 |
-ef | 顯示系統中所有進程的列表,包括其他用戶的進程 |
-l | 以長格式顯示進程信息 |
-u | 顯示面向用戶的格式,包括用戶名、CPU 及內存的使用情況等信息 |
使用 ps 命令可以及時發現進程異常情況,并與 kill 命令搭配使用以中斷不必要的服務進程。
① 查看系統內所有進程:ps -elf
,可以顯示父子進程關系。
- F :進程標志(flags)
- S :進程狀態(sleeping, running, stopped等)
- R → 運行狀態
- S → 睡眠狀態
- T → 暫停狀態(調試)
- Z (zombie)→ 僵尸狀態,進程結束后,資源沒有被回收
- UID:進程所有者的用戶 ID
- PID:進程的進程 ID
- PPID :進程雙親的進程 ID
- C :CPU 使用率的調度優先級相關信息
- PRI :進程優先級
- NI :進程的 nice 值(優先級調整)
- ADDR :進程的地址(內存地址)信息
- SZ :進程使用的內存頁數(虛擬內存大小)
- WCHAN :進程正在等待的內核函數地址(等待通道)
- TTY :進程啟動時的終端設備
- TIME :進程占用 CPU 的累計時間
- CMD :啟動該進程的命令名稱和參數
② 查看指定進程是否還在:ps -elf |grep tcp_server
or ps -elf |grep udp_server
。
③ 顯示所有進程的詳細狀態:ps aux
- USER :啟動這些進程的用戶
- %CPU :進程占用的 CPU 百分比
- %MEM :占用內存的百分比
- VSZ :該進程使用的虛擬內存量(KB)
- RSS :該進程占用的固定內存量(KB)
- STAT :進程的狀態
- START :進程啟動的時間
- COMMAND :啟動的程序名稱或命令行
注:
cat /proc/cpuinfo
查看 Linux 的 CPU 的核數。
2. 顯示系統性能信息和進程信息:top
top
顯示前 20 條進程,動態的改變,按 q 退出。
1)系統總體信息
- 時間和運行時長:如 15:40:11 up 3:25 表示當前時間和系統已運行 3 小時 25 分鐘。
- 用戶數:當前登錄用戶數。
- 負載平均值:系統 1、5、15 分鐘的負載。
- 任務(進程)數量和狀態:總進程數,運行、睡眠、停止、僵尸進程數。
- CPU 使用詳情(us 用戶空間,sy 系統空間,ni 用戶設定優先級進程,id 空閑,wa 等待 I/O,hi 硬件中斷,si 軟件中斷,st 被虛擬機偷取的資源)。
- 內存使用詳情(總內存,空閑,已用,緩存等)。
- 交換空間(swap) 使用情況。
2)進程信息列表
- PR :優先級
- VIRT :虛擬內存大小
- RES :常駐內存大小
- SHR :共享內存大小
- TIME+ :進程使用 CPU 累計時間
優先級(PR)和 NI(nice 值)間關系:nice 值越小,優先級越高。
3)top 命令常用快捷鍵
快捷鍵 | 功能說明 | 快捷鍵 | 功能說明 |
---|---|---|---|
h | 顯示幫助界面 | q | 退出 top |
P | 以 CPU 使用率排序 | M | 以內存使用率排序 |
T | 以累計 CPU 時間排序 | k | 殺死一個進程(輸入 PID) |
r | 改變某個進程的優先級(輸入 PID 和新優先級) | space | 立即刷新 |
1 | 顯示 / 隱藏各 CPU 核心的使用情況 |
4)top 命令常用參數
參數 | 說明 |
---|---|
-d 秒數 | 設置刷新間隔時間 |
-p PID | 監控指定進程 |
-u 用戶名 | 僅顯示指定用戶的進程 |
-n 次數 | 設置刷新次數,執行指定次數后退出 |
-b | 批處理模式(適合腳本使用) |
示例:top -d 1 -n 10 -u root
表示每 1 秒刷新一次,刷新 10 次后退出,只顯示 root 用戶的進程。
3. 向進程發送信號:kill
kill [選項] <pid>
命令是 Unix / Linux 系統中用來向進程發送信號的命令,最常用于終止進程。
- <pid>:進程 ID ,指定要發送信號的目標進程。
- 支持一次給多個進程發信號。
1)常用信號
信號名稱 | 數字 | 作用 |
---|---|---|
SIGTERM (15) | 15 | 終止進程,默認信號,進程可捕獲,優雅退出 |
SIGKILL (9) | 9 | 強制殺死進程,不能被捕獲或忽略 |
SIGSTOP (19) | 19 | 暫停進程(不能捕獲) |
SIGCONT (18) | 18 | 繼續暫停的進程 |
SIGHUP (1) | 1 | 終端掛起信號,通常用于重讀配置文件 |
2)常用用法示例
-
默認殺死進程(發送 SIGTERM):
kill 1234
-
強制殺死進程(發送 SIGKILL):
kill -9 1234
-
發送其他信號:
kill -s SIGSTOP 1234
# 暫停進程
kill -SIGCONT 1234
# 繼續進程 -
給多個進程發送 9 號信號:
kill -9 1234 2345 3456
-
查看系統的所有信號:
kill -l
注意事項:
-
使用 kill 需要對目標進程有足夠權限,一般只能殺自己啟動的進程,或使用 root 權限。
-
優先用默認的 SIGTERM ,給進程機會清理資源,然后再考慮 SIGKILL 。
-
信號傳遞不是命令 “殺死” 進程的絕對保證,進程可以捕獲和自定義信號處理(除 SIGKILL 和 SIGSTOP)。
3)pkill 命令
pkill 是一個在類 Unix 系統中用于根據進程名或其他屬性來終止進程的命令。它是 kill 命令的增強版本,能夠通過匹配進程名、用戶、終端等條件來批量發送信號給進程。
pkill [選項] <模式>
-
<模式> 通常是指進程名的模式(可以是完整進程名,也可以是正則表達式)。
-
默認發送 SIGTERM 信號(即請求終止進程)。
常用選項及說明:
選項 | 說明 |
---|---|
-signal | 發送指定信號,例如 -9 (SIGKILL, 強制終止),-15 (SIGTERM) 等 |
-f | 匹配完整命令行,而不僅僅是進程名 |
-u <用戶> | 只匹配該用戶的進程 |
-t <終端> | 只匹配指定終端的進程(如pts/0 ) |
-n | 只作用于最新啟動的匹配進程(PID 最大的那個) |
-o | 只作用于最早啟動的匹配進程(PID 最小的那個) |
-x | 進程名必須完全匹配(不允許模糊匹配) |
-v | 反轉匹配,即殺死不匹配模式的進程 |
-l | 列出所有信號名稱 |
-c | 僅顯示將會被殺死的匹配進程數(不實際殺死) |
注意:
-
pkill 通過向進程發送信號來終止進程,默認信號是 SIGTERM ,這允許進程清理資源后退出。若想強制終止進程,用 -9 (SIGKILL) ,但這樣進程無法清理資源,可能引發數據丟失。
-
pkill 需對目標進程有足夠權限,否則可能殺死失敗。
-
在生產環境,使用 pkill 時要特別注意匹配規則,避免誤殺重要進程。
相關命令:
-
kill
: 按 PID 殺進程。 -
pgrep
: 查找匹配條件的進程 ID ,配合 pkill 可做更復雜處理。 -
killall
: 根據名字殺死進程,某些系統與 pkill 相似但細節不同。
4. 管理定時任務:crontab(了解)
crontab [選項] [文件]
是 Linux / Unix 系統中用來管理定時任務的命令,允許用戶根據時間周期自動執行腳本或命令。
基本功能:
-
管理用戶的 “cron 任務表” ,用于周期性執行任務。
-
每個用戶有獨立的 crontab 文件。
-
常用來自動執行備份、監控腳本等。
1)常用選項和命令
設置定時任務:vim /etc/crontab
命令 / 選項 | 說明 |
---|---|
-e | 編輯當前用戶的定時任務(打開編輯器) |
-l | 列出當前用戶的定時任務 |
-r | 刪除當前用戶的所有定時任務 |
-u [用戶名] -l | 查看指定用戶的定時任務(需要權限) |
filename | 從文件導入定時任務(覆蓋當前用戶 crontab) |
2)crontab 文件格式與字段值說明
crontab 文件格式:crontab 文件每一行定義一個定時任務,格式為:分 時 日 月 周 命令。
字段 | 說明 | 取值范圍 |
---|---|---|
分 | 分鐘 | 0 - 59 |
時 | 小時 | 0 - 23 |
日 | 月內日期 | 1 - 31 |
月 | 月份 | 1 - 12 |
周 | 星期幾(0 - 7,0 和 7 都是星期日) | 0 - 7 |
命令 | 要執行的命令或腳本路徑 |
字段值說明:
-
* 代表任意值
-
多值用逗號分隔,如 1, 5, 10
-
區間用連字符,如 1-5
-
步進用斜杠,如每 10 分鐘:*/10
-
星期和日期字段:如果同時指定,兩個條件滿足之一即可執行
3)示例
-
每天凌晨 1 點執行 /home/user/backup.sh :
0 1 * * * /home/user/backup.sh
-
每 5 分鐘執行腳本:
*/5 * * * * /path/to/script.sh
-
每周一早上 7 點執行任務:
0 7 * * 1 /path/to/script.sh
-
每月 1 號 0 點執行:
0 0 1 * * /path/to/script.sh
-
每天晚上 10 點執行關機命令:
0 22 * * * /sbin/shutdown -h now
注:需要執行which shutdown
查看 shutdown 的路徑,如果不是 /sbin/shutdown 則需要替換。
注意事項:
-
命令中的環境變量可能不完整,最好使用完整路徑或在腳本中設置環境。
-
crontab 里寫的命令不顯示輸出,推薦重定向輸出到日志文件,如:
0 1 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1
。 -
編輯結束保存后,cron 會自動加載新任務。
5. 繼續運行命令:bg
bg [作業號]
:如果不指定作業號,則默認對最近的被暫停的作業執行 bg 操作。
作用:
-
把暫停(stop)狀態的作業放到后臺繼續運行。
-
讓命令繼續運行,但不占用當前終端。
使用場景:
-
你運行了一個命令,按 Ctrl+Z 暫停它(將其掛起,放到后臺停止狀態)。
-
接著你用 bg 讓該任務在后臺繼續執行,而終端可以繼續做其他事情。
相關命令:
-
Ctrl+Z
:暫停當前前臺任務(發送 SIGTSTP 信號)。 -
jobs
:列出當前用戶的所有后臺作業及狀態。 -
bg
:將暫停的作業放到后臺繼續運行。 -
fg
:把后臺作業調回前臺繼續運行。
示例:
假設你啟動了一個命令:sleep 100
,然后按下 Ctrl+Z,終端顯示:
[1]+ Stopped sleep 100
這時,任務暫停了,如果輸入:bg
,會看到:
[1]+ sleep 100 &
這表示任務在后臺繼續運行,終端可繼續輸入其他命令。
注意事項:
-
bg 只能作用于已經暫停的作業,運行中的或不存在的作業用不了。
-
需要通過 jobs 或直接寫作業號,比如:
bg %1
,表示讓作業號為 1 的任務放后臺運行。
6. 重啟 / 關閉 Linux 系統
-
reboot
:重啟正在運行的 Linux 操作系統 -
poweroff
:關閉正在運行的 Linux 操作系統并切斷系統電源
參考文章:【Linux關機和重啟詳解(shutdown、halt、poweroff、reboot、init)】
補充
1. 查看物理內存:free
free 命令是 Linux 系統中查看內存使用情況的常用命令。它可以快速顯示系統的物理內存和交換空間(swap)的使用狀況,幫助用戶了解系統內存的分配和剩余情況。
1)常用選項
free [選項]
選項 | 作用說明 |
---|---|
-h | 以更易讀的格式顯示內存信息(自動使用 KB / MB / GB) |
-b | 以字節為單位顯示 |
-k | 以 KB 為單位顯示(默認單位) |
-m | 以 MB 為單位顯示 |
-g | 以 GB 為單位顯示 |
-t | 顯示總計(內存 + 交換空間的總計信息) |
-s 秒數 | 每隔指定秒數刷新一次顯示,直到用戶退出 |
-c 次數 | 配合 -s ,指定刷新次數 |
2)輸出字段說明
-
total :內存總量(物理內存或者交換空間總量)。
-
used :已使用內存,包括內核占用的緩存和緩沖區,所以不代表 “實際使用” 的內存。
-
free :未用的內存,是沒有被任何用途占用的內存。
-
shared :多個進程共享使用的內存(shared memory)。
-
buff / cache :緩存和緩沖區占用的內存,它們是可以隨時釋放給程序使用的。
-
available :應用程序可用的內存(是估算值,比 free 更準確、更實際的可用內存指標),不僅包含 free 內存,還包括了部分緩存中能夠被回收的內存。
3)總結
-
Linux 會盡量利用空閑內存做緩存,提高系統性能。
-
free 命令快速反映內存使用狀態,是排查內存瓶頸的重要工具。
-
結合 buff / cache 和 available 字段判斷內存使用情況,更準確。
-
默認輸出單位是 KB ,推薦加 -h 參數提升可讀性。