Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 系統管理核心命令速查:chkconfig、df、ps、netstat 參數詳解與實戰場景

編輯:Linux 教學

系統管理員日常離不開服務管理、磁盤監控、進程檢查、網絡狀態查看四大核心命令。本文提煉高頻參數組合、典型輸出解讀與實戰排錯場景,作為桌面速查手冊。

chkconfig:SysV 服務運行級管理 (CentOS 6/7 兼容)

注意:CentOS 7+ 推薦 systemctl,chkconfig 僅兼容 SysV 腳本。


# 列出所有服務在各運行級狀態
chkconfig --list
chkconfig --list nginx

# 設置服務在運行級 3,4,5 自啟
chkconfig --level 345 nginx on
chkconfig nginx on        # 等同 --level 345

# 禁用服務
chkconfig nginx off

# 添加/刪除服務 (需腳本含 chkconfig 註釋)
chkconfig --add myservice
chkconfig --del myservice

# 運行級含義
# 0: 關機  1: 單用戶  2: 多用戶無網絡  3: 多用戶有網絡 (字符界面)
# 4: 預留  5: 圖形界面  6: 重啟

實戰:檢查關鍵服務自啟狀態


for svc in sshd network crond sysstat rsyslog nginx mysql docker; do
    chkconfig --list "$svc" 2>/dev/null | grep -E '3:on|5:on' || echo "$svc NOT enabled in runlevel 3/5"
done

df:文件系統磁盤空間查看


df -hT          # 人類可讀、顯示文件系統類型 (ext4/xfs/nfs/vfat)
df -h /home     # 指定掛載點
df -i           # inode 使用率 (關鍵:大量小文件場景)
df -h --output=source,fstype,size,used,avail,pcent,target  # 自定義列

關鍵指標解讀

  • Use% > 80%:觸發告警,排查大文件/日志/快照。
  • IUse% > 80%:inode 耗盡無法創建新文件,清理緩存/臨時文件/郵件隊列。
  • tmpfs 100%:/dev/shm、/run 內存文件系統滿,檢查應用共享內存洩漏。

實戰:查找佔用空間最大的目錄


du -h --max-depth=1 / | sort -hr | head -20
# 或交互式
ncdu /

ps:進程快照與線程檢查


ps aux              # BSD 風格,所有進程,含 CPU/MEM%
ps -ef              # SystemV 風格,顯示 PPID
ps -efT             # 顯示線程 (SPID/LWP)
ps -Lf PID          # 指定進程的所有線程
ps -eo pid,ppid,user,pcpu,pmem,cmd,stat,wchan --sort=-pcpu | head -20  # 自定義排序
ps -T -C java       # 某命令的所有線程

STAT 狀態碼速查

碼含義
R運行/就緒
S可中斷睡眠
D不可中斷睡眠 (通常 IO)
T停止/跟蹤
Z殭屍
<高優先級
N低優先級
L鎖頁內存
s會話首進程
l多線程
+前台進程組

實戰:定位高 CPU 線程並映射到 Java 代碼


# 1. 找高 CPU 線程 PID (LWP)
ps -Leo pid,lwp,pcpu,cmd | grep java | sort -k3 -nr | head -5
# 輸出: 1234  5678  95.2  java ...

# 2. 轉換 LWP 為 16 進制
printf "%x\n" 5678   # 0x162e

# 3. jstack 導出線程堆疊
jstack 1234 > /tmp/threaddump.txt
# 搜索 nid=0x162e 定位代碼行

netstat / ss:網絡連接與監聽端口檢查

推薦 ss (iproute2),更快、更豐富、netstat 已棄用。


# 所有監聽端口 (TCP/UDP) + 進程信息
ss -ntulp
netstat -ntulp

# 所有已建立 TCP 連接
ss -nt
netstat -nt

# 連接狀態統計
ss -s
netstat -s

# 查看特定端口進程
ss -ntulp sport = :80
netstat -ntulp | grep :80

# 顯示定時器/內存/內核信息
ss -ti
ss -mi

TCP 狀態機關鍵狀態

  • LISTEN:服務端監聽中。
  • SYN_SENT/SYN_RECV:握手中,大量 SYN_RECV 可能遭受 SYN Flood。
  • ESTABLISHED:正常數據傳輸。
  • FIN_WAIT1/FIN_WAIT2:主動關閉等待。
  • TIME_WAIT:主動關閉端等待 2MSL,大量佔用端口需調內核參數 net.ipv4.tcp_tw_reuse=1。
  • CLOSE_WAIT:被動關閉端未調用 close(),應用層 Bug 導致連接洩漏。

實戰:排查 CLOSE_WAIT 連接洩漏


# 1. 找出 CLOSE_WAIT 連接的 PID
ss -ntp state close-wait
# 或
netstat -ntp | grep CLOSE_WAIT

# 2. 定位代碼 (Java 示例)
jstack PID | grep -A 20 "CLOSE_WAIT"
# 檢查 HTTP 客戶端 (HttpClient/OkHttp) 是否正確釋放連接、連接池配置

組合拳:系統健康快照腳本


#!/bin/bash
echo "===== $(date) System Snapshot ====="
echo "--- Load & Uptime ---"; uptime
echo "--- Memory ---"; free -h
echo "--- Disk / ---"; df -h /
echo "--- Disk Inodes / ---"; df -i /
echo "--- Top 5 CPU Processes ---"; ps aux --sort=-pcpu | head -6
echo "--- Top 5 MEM Processes ---"; ps aux --sort=-pmem | head -6
echo "--- Listening Ports ---"; ss -ntulp
echo "--- TCP States Summary ---"; ss -s | grep -E 'TCP:|estab|time-wait|close-wait'
echo "--- Failed Systemd Units ---"; systemctl --failed --no-legend
Copyright © Windows教程網 All Rights Reserved