作為一名運維工程師,熟練掌握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 # 實時監控日志文件
面試常問:more和less的區別?
?more只能向前翻頁,less可以前后翻頁
?less占用內存更少,適合查看大文件
?less支持搜索功能(/關鍵詞)
1.2 文件查找命令
# find命令的高級用法 find /var/log -name"*.log"-mtime -7 # 查找7天內修改的日志文件 find /home -typef -size +100M # 查找大于100M的文件 find /etc -name"*.conf"-execgrep -l"port"{} ; # 查找包含port的配置文件 # locate命令(需要定期更新數據庫) updatedb # 更新文件數據庫 locate nginx.conf # 快速定位文件 # which和whereis whichpython3 # 查找命令路徑 whereis nginx # 查找二進制文件、源碼、手冊位置
1.3 文件權限管理
# 權限查看和修改 ls-la /etc/passwd # 查看詳細權限信息 chmod755 /usr/local/bin/script.sh # 修改權限 chmodu+x,g+r,o-w filename # 使用符號模式 chownnginx:nginx /var/www/html # 修改所有者和組 chgrpwww-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 # 重載配置 systemctlenablenginx # 設置開機自啟 systemctldisablenginx # 禁止開機自啟 systemctl status nginx # 查看服務狀態 # 查看服務日志 journalctl -u nginx # 查看nginx服務日志 journalctl -f -u nginx # 實時跟蹤日志
五、網絡配置與故障排查
5.1 網絡配置
# IP配置 ip addr show # 查看IP地址 ip route show # 查看路由表 iplinkshow # 查看網絡接口 # 傳統網絡命令 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 -aGsudousername # 添加用戶到sudo組 passwd username # 設置密碼 userdel -r username # 刪除用戶及主目錄 # 用戶信息查看 idusername # 查看用戶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使用記錄 # 文件完整性檢查 md5sumfile.txt # 計算MD5值 sha256sumfile.txt # 計算SHA256值
八、高級命令技巧
8.1 命令組合與管道
# 復雜的命令組合 ps aux | grep nginx | grep -v grep | awk'{print $2}'| xargskill-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"-execgrep -l"error"{} ; | xargsls-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 -typef -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. 多動手實踐,在測試環境中反復練習
2. 理解每個命令的工作原理,不只是記憶用法
3. 學會組合使用命令,提高工作效率
4. 關注系統安全,養成良好的運維習慣
5. 持續學習新的工具和技術
希望這篇文章能幫助你在Linux運維的道路上更進一步!
本文涵蓋了運維工程師必須掌握的Linux命令技能,如果你覺得有用,歡迎分享給更多的運維同行!
-
Linux
+關注
關注
87文章
11515瀏覽量
213959 -
數據庫
+關注
關注
7文章
3933瀏覽量
66336 -
文件
+關注
關注
1文章
583瀏覽量
25390 -
命令
+關注
關注
5文章
739瀏覽量
22901
原文標題:月薪2W+運維工程師都在用的Linux命令清單(建議收藏)
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Linux find命令詳解
介紹一些實用的Linux命令

評論