月薪2W+運維工程師都在用的Linux命令清單(建議收藏)
一、檔案和目錄操作:基礎中的基礎
1.1 檔案檢視命令
# 檢視檔案內容
cat /etc/passwd # 顯示完整檔案內容
more /var/log/messages # 分頁檢視大檔案
less /var/log/syslog # 更靈活的分頁檢視
head -20 /var/log/nginx.log # 檢視檔案前20行
tail -f /var/log/apache.log # 即時監控日誌檔案
more
和less
的區別?-
• more
只能向前翻頁,less
可以前後翻頁 -
• less
佔用記憶體更少,適合檢視大檔案 -
• less
支援搜尋功能(/關鍵詞)
1.2 檔案查詢命令
# find命令的高階用法
find /var/log -name "*.log" -mtime -7 # 查詢7天內修改的日誌檔案
find /home -type f -size +100M # 查詢大於100M的檔案
find /etc -name "*.conf" -exec grep -l "port" {} \; # 查詢包含port的配置檔案
# locate命令(需要定期更新資料庫)
updatedb # 更新檔案資料庫
locate nginx.conf # 快速定位檔案
# which和whereis
which python3 # 查詢命令路徑
whereis nginx # 查詢二進位制檔案、原始碼、手冊位置
1.3 檔案許可權管理
# 許可權檢視和修改
ls -la /etc/passwd # 檢視詳細許可權資訊
chmod 755 /usr/local/bin/script.sh # 修改許可權
chmod u+x,g+r,o-w filename # 使用符號模式
chown nginx:nginx /var/www/html # 修改所有者和組
chgrp www-data /var/log/nginx/ # 修改組所有權
# 特殊許可權
chmod +t /tmp # 設定粘滯位
chmod +s /usr/bin/passwd # 設定SUID
二、系統監控與效能分析
2.1 系統資源監控
# CPU和記憶體監控
top # 即時檢視系統狀態
htop # 更美觀的top
ps aux | grep nginx # 檢視特定程序
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -10 # 按CPU使用率排序
# 記憶體分析
free -h # 檢視記憶體使用情況
cat /proc/meminfo # 詳細記憶體資訊
vmstat 1 5 # 每秒顯示一次,共5次系統狀態
2.2 磁碟空間管理
# 磁碟使用情況
df -h # 檢視磁碟使用率
du -sh /var/log/* # 檢視目錄大小
du -ah /home | sort -rh | head -20 # 查詢最大的20個檔案/目錄
# 磁碟IO監控
iostat -x 1 # 每秒顯示磁碟IO統計
iotop # 即時檢視程序IO使用情況
2.3 網路監控
# 網路連線狀態
netstat -tulpn # 檢視埠監聽狀態
ss -tulpn # 更現代的netstat替代品
lsof -i :80 # 檢視80埠被哪個程序佔用
# 網路流量監控
iftop # 即時網路流量監控
nethogs # 按程序顯示網路使用情況
tcpdump -i eth0 port 80 # 抓包分析
三、文字處理與日誌分析
3.1 文字處理三劍客
# grep:文字搜尋
grep -r "error" /var/log/ # 遞迴搜尋錯誤日誌
grep -i "failed" /var/log/auth.log # 忽略大小寫搜尋
grep -v "INFO" /var/log/app.log | head -20 # 排除INFO級別日誌
grep -E "192\.168\.1\.[0-9]+" access.log # 使用正則表示式
# sed:文字編輯
sed 's/old/new/g' file.txt # 替換所有old為new
sed -n '10,20p' file.txt # 顯示10-20行
sed -i 's/DEBUG/INFO/g' config.conf # 直接修改檔案
sed '/^#/d' config.conf # 刪除註釋行
# awk:文字分析
awk '{print $1}' /var/log/nginx/access.log # 提取第一列(IP地址)
awk -F: '{print $1}' /etc/passwd # 使用冒號分隔符
awk '$3 > 100 {print $0}' data.txt # 條件過濾
3.2 日誌分析實戰
# 分析訪問日誌
# 統計訪問量最高的IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
# 統計404錯誤
awk '$9 == 404 {print $0}' access.log | wc -l
# 分析訪問時間分佈
awk '{print $4}' access.log | cut -d: -f2 | sort | uniq -c
# 統計不同狀態碼數量
awk '{print $9}' access.log | sort | uniq -c | sort -nr
四、程序管理與服務控制
4.1 程序管理
# 程序控制
kill -9 PID # 強制終止程序
killall nginx # 終止所有nginx程序
pkill -f "python script"# 按名稱模式終止程序
pgrep -f nginx # 查詢程序PID
# 後臺任務管理
nohupcommand & # 後臺執行命令
jobs# 檢視後臺任務
bg %1 # 將任務轉到後臺
fg %1 # 將任務調到前臺
4.2 系統服務管理
# SystemD服務管理
systemctl start nginx # 啟動服務
systemctl stop nginx # 停止服務
systemctl restart nginx # 重啟服務
systemctl reload nginx # 過載配置
systemctl enable nginx # 設定開機自啟
systemctl disable nginx # 禁止開機自啟
systemctl status nginx # 檢視服務狀態
# 檢視服務日誌
journalctl -u nginx # 檢視nginx服務日誌
journalctl -f -u nginx # 即時跟蹤日誌
五、網路配置與故障排查
5.1 網路配置
# IP配置
ip addr show # 檢視IP地址
ip route show # 檢視路由表
ip link show # 檢視網路介面
# 傳統網路命令
ifconfig eth0 # 檢視網絡卡資訊
route -n # 檢視路由表
arp -a # 檢視ARP表
5.2 網路故障排查
# 連通性測試
ping -c 4 google.com # 測試網路連通性
traceroute google.com # 追蹤路由路徑
mtr google.com # 即時路由追蹤
# 埠測試
telnet 192.168.1.1 80 # 測試埠連通性
nc -zv 192.168.1.1 80 # 使用nc測試埠
六、壓縮與備份
6.1 檔案壓縮
# tar命令
tar -czf backup.tar.gz /var/www/ # 建立壓縮包
tar -xzf backup.tar.gz # 解壓縮
tar -tzf backup.tar.gz # 檢視壓縮包內容
tar -czf backup-$(date +%Y%m%d).tar.gz /etc/ # 帶日期的備份
# 其他壓縮工具
zip -r backup.zip /var/www/ # 建立zip檔案
unzip backup.zip # 解壓zip檔案
gzip file.txt # 壓縮單個檔案
gunzip file.txt.gz # 解壓縮
6.2 資料同步
# rsync資料同步
rsync -avz /var/www/ user@remote:/backup/ # 同步到遠端伺服器
rsync -avz --delete /var/www/ /backup/ # 同步並刪除目標多餘檔案
rsync -avz --exclude='*.log' /var/www/ /backup/ # 排除日誌檔案
七、系統安全與使用者管理
7.1 使用者管理
# 使用者操作
useradd -m -s /bin/bash username # 建立使用者
usermod -aG sudo username # 新增使用者到sudo組
passwd username # 設定密碼
userdel -r username # 刪除使用者及主目錄
# 使用者資訊檢視
id username # 檢視使用者ID和組資訊
who# 檢視當前登入使用者
w # 檢視使用者活動
last # 檢視登入歷史
7.2 系統安全
# 系統日誌檢查
tail -f /var/log/auth.log # 監控登入日誌
grep "Failed password" /var/log/auth.log # 查詢失敗登入
grep "sudo" /var/log/auth.log # 檢視sudo使用記錄
# 檔案完整性檢查
md5sum file.txt # 計算MD5值
sha256sum file.txt # 計算SHA256值
八、高階命令技巧
8.1 命令組合與管道
# 複雜的命令組合
ps aux | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9
# 查詢nginx程序並終止
cat /var/log/nginx/access.log | grep "GET" | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
# 統計GET請求最多的IP
find /var/log -name "*.log" -exec grep -l "error" {} \; | xargs ls -la
# 查詢包含error的日誌檔案並顯示詳細資訊
8.2 指令碼化運維
# 一鍵系統資訊收集指令碼
#!/bin/bash
echo"=== 系統資訊 ===" > system_info.txt
uname -a >> system_info.txt
echo"=== CPU資訊 ===" >> system_info.txt
cat /proc/cpuinfo | grep "model name" | head -1 >> system_info.txt
echo"=== 記憶體資訊 ===" >> system_info.txt
free -h >> system_info.txt
echo"=== 磁碟資訊 ===" >> system_info.txt
df -h >> system_info.txt
echo"=== 網路資訊 ===" >> system_info.txt
ip addr show >> system_info.txt
九、面試常見問題解答
9.1 效能調優相關
uptime# 檢視系統負載
cat /proc/loadavg # 詳細負載資訊
w # 檢視負載和使用者
top -p PID # 監控特定程序
strace -p PID # 跟蹤系統呼叫
perf top # 效能分析工具
9.2 儲存管理相關
du -ah /var | sort -rh | head -20
find /var -type f -size +100M -execls -lh {} \;
df -h # 檢視磁碟使用率
inotifywait -m /var/log/ # 監控檔案變化
十、實戰場景演練
10.1 伺服器故障排查流程
# 1. 系統基本資訊檢查
uptime && free -h && df -h
# 2. 程序狀態檢查
ps aux | head -20
top -n 1 | head -20
# 3. 網路狀態檢查
netstat -tulpn | grep LISTEN
ss -tulpn
# 4. 日誌檢查
tail -50 /var/log/messages
journalctl -xe
10.2 日常維護指令碼
#!/bin/bash
# 系統健康檢查指令碼
LOG_FILE="/var/log/health_check.log"
DATE=$(date'+%Y-%m-%d %H:%M:%S')
echo"[$DATE] 開始系統健康檢查" >> $LOG_FILE
# 檢查磁碟使用率
DISK_USAGE=$(df -h | grep -E "8[0-9]%|9[0-9]%|100%")
if [ ! -z "$DISK_USAGE" ]; then
echo"[$DATE] 警告:磁碟使用率過高" >> $LOG_FILE
echo"$DISK_USAGE" >> $LOG_FILE
fi
# 檢查記憶體使用率
MEM_USAGE=$(free | grep Mem | awk '{print ($3/$2) * 100.0}')
if (( $(echo "$MEM_USAGE > 90" | bc -l) )); then
echo"[$DATE] 警告:記憶體使用率過高:$MEM_USAGE%" >> $LOG_FILE
fi
# 檢查系統負載
LOAD_AVG=$(uptime | awk -F'load average:''{print $2}' | cut -d, -f1 | tr -d ' ')
if (( $(echo "$LOAD_AVG > 2.0" | bc -l) )); then
echo"[$DATE] 警告:系統負載過高:$LOAD_AVG" >> $LOG_FILE
fi
echo"[$DATE] 系統健康檢查完成" >> $LOG_FILE
總結
-
1. 多動手實踐,在測試環境中反覆練習 -
2. 理解每個命令的工作原理,不只是記憶用法 -
3. 學會組合使用命令,提高工作效率 -
4. 關注系統安全,養成良好的運維習慣 -
5. 持續學習新的工具和技術








