月薪2W+運維工程師都在用的Linux命令清單(建議收藏)

月薪2W+運維工程師都在用的Linux命令清單(建議收藏)

作為一名運維工程師,熟練掌握Linux命令是基本功中的基本功。無論是日常工作中的系統維護,還是面試時的技術考核,Linux命令都是繞不開的核心技能。本文將從實戰角度出發,系統梳理運維工程師必須掌握的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  # 即時監控日誌檔案
面試常問moreless的區別?
  • • 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 效能調優相關

Q: 如何檢視系統負載?
uptime# 檢視系統負載
cat /proc/loadavg          # 詳細負載資訊
w                          # 檢視負載和使用者
Q: 如何排查CPU使用率過高?
top -p PID                 # 監控特定程序
strace -p PID              # 跟蹤系統呼叫
perf top                   # 效能分析工具

9.2 儲存管理相關

Q: 如何找出佔用空間最大的檔案?
du -ah /var | sort -rh | head -20
find /var -type f -size +100M -execls -lh {} \;
Q: 如何監控檔案系統使用情況?
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

總結

掌握這些Linux命令不僅能幫助你在面試中脫穎而出,更重要的是能在實際工作中提高效率,快速定位和解決問題。記住,命令只是工具,真正的技能在於理解系統原理,能夠根據實際情況靈活運用這些命令。
作為運維工程師,建議你:
  1. 1. 多動手實踐,在測試環境中反覆練習
  2. 2. 理解每個命令的工作原理,不只是記憶用法
  3. 3. 學會組合使用命令,提高工作效率
  4. 4. 關注系統安全,養成良好的運維習慣
  5. 5. 持續學習新的工具和技術
希望這篇文章能幫助你在Linux運維的道路上更進一步!

本文涵蓋了運維工程師必須掌握的Linux命令技能,如果你覺得有用,歡迎分享給更多的運維同行!
文末福利
就目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。
為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套高階運維工程師必備技能資料包,內容有多詳實豐富看下圖!
共有 20 個模組
1.38張最全工程師技能圖譜
2.面試大禮包
3.Linux書籍
4.go書籍
······
6.自動化運維工具
18.訊息佇列合集
 以上所有資料獲取請掃碼
備註:最新運維資料
100%免費領取
(後臺不再回復,掃碼一鍵領取)

相關文章