作為一名工程師,熟練掌握Linux命令是基本功中的基本功。無論是日常工作中的系統(tǒng)維護(hù),還是面試時(shí)的技術(shù)考核,Linux命令都是繞不開的核心技能。本文將從實(shí)戰(zhàn)角度出發(fā),系統(tǒng)梳理工程師必須掌握的Linux命令,并結(jié)合實(shí)際場景解析其應(yīng)用方法。
一、文件和目錄操作:基礎(chǔ)中的基礎(chǔ)
1.1 文件查看命令
# 查看文件內(nèi)容
cat/etc/passwd # 顯示完整文件內(nèi)容
more /var/log/messages # 分頁查看大文件
less /var/log/syslog # 更靈活的分頁查看
head-20 /var/log/nginx.log # 查看文件前20行
tail-f /var/log/apache.log # 實(shí)時(shí)監(jiān)控日志文件
面試常問:more和less的區(qū)別?
- ?more只能向前翻頁,less可以前后翻頁
- ?less占用內(nèi)存更少,適合查看大文件
- ?less支持搜索功能(/關(guān)鍵詞)
1.2 文件查找命令
# find命令的高級(jí)用法
find /var/log -name"*.log"-mtime -7 # 查找7天內(nèi)修改的日志文件
find /home -typef -size +100M # 查找大于100M的文件
find /etc -name"*.conf"-execgrep -l"port"{} \; # 查找包含port的配置文件
# locate命令(需要定期更新數(shù)據(jù)庫)
updatedb # 更新文件數(shù)據(jù)庫
locate nginx.conf # 快速定位文件
# which和whereis
whichpython3 # 查找命令路徑
whereis nginx # 查找二進(jìn)制文件、源碼、手冊(cè)位置
1.3 文件權(quán)限管理
# 權(quán)限查看和修改
ls-la /etc/passwd # 查看詳細(xì)權(quán)限信息
chmod755 /usr/local/bin/script.sh # 修改權(quán)限
chmodu+x,g+r,o-w filename # 使用符號(hào)模式
chownnginx:nginx /var/www/html # 修改所有者和組
chgrpwww-data /var/log/nginx/ # 修改組所有權(quán)
# 特殊權(quán)限
chmod+t /tmp # 設(shè)置粘滯位
chmod+s /usr/bin/passwd # 設(shè)置SUID
二、系統(tǒng)監(jiān)控與性能分析
2.1 系統(tǒng)資源監(jiān)控
# CPU和內(nèi)存監(jiān)控
top # 實(shí)時(shí)查看系統(tǒng)狀態(tài)
htop # 更美觀的top
ps aux | grep nginx # 查看特定進(jìn)程
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu |head-10 # 按CPU使用率排序
# 內(nèi)存分析
free -h # 查看內(nèi)存使用情況
cat/proc/meminfo # 詳細(xì)內(nèi)存信息
vmstat 1 5 # 每秒顯示一次,共5次系統(tǒng)狀態(tài)
2.2 磁盤空間管理
# 磁盤使用情況
df-h # 查看磁盤使用率
du-sh /var/log/* # 查看目錄大小
du-ah /home |sort-rh |head-20 # 查找最大的20個(gè)文件/目錄
# 磁盤IO監(jiān)控
iostat -x 1 # 每秒顯示磁盤IO統(tǒng)計(jì)
iotop # 實(shí)時(shí)查看進(jìn)程IO使用情況
2.3 網(wǎng)絡(luò)監(jiān)控
# 網(wǎng)絡(luò)連接狀態(tài)
netstat -tulpn # 查看端口監(jiān)聽狀態(tài)
ss -tulpn # 更現(xiàn)代的netstat替代品
lsof -i :80 # 查看80端口被哪個(gè)進(jìn)程占用
# 網(wǎng)絡(luò)流量監(jiān)控
iftop # 實(shí)時(shí)網(wǎng)絡(luò)流量監(jiān)控
nethogs # 按進(jìn)程顯示網(wǎng)絡(luò)使用情況
tcpdump -i eth0 port 80 # 抓包分析
三、文本處理與日志分析
3.1 文本處理三劍客
# grep:文本搜索
grep -r"error"/var/log/ # 遞歸搜索錯(cuò)誤日志
grep -i"failed"/var/log/auth.log # 忽略大小寫搜索
grep -v"INFO"/var/log/app.log |head-20 # 排除INFO級(jí)別日志
grep -E"192\.168\.1\.[0-9]+"access.log # 使用正則表達(dá)式
# 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 # 使用冒號(hào)分隔符
awk'$3 > 100 {print $0}'data.txt # 條件過濾
3.2 日志分析實(shí)戰(zhàn)
# 分析訪問日志
# 統(tǒng)計(jì)訪問量最高的IP
awk'{print $1}'access.log |sort|uniq-c |sort-nr |head-10
# 統(tǒng)計(jì)404錯(cuò)誤
awk'$9 == 404 {print $0}'access.log |wc-l
# 分析訪問時(shí)間分布
awk'{print $4}'access.log |cut-d: -f2 |sort|uniq-c
# 統(tǒng)計(jì)不同狀態(tài)碼數(shù)量
awk'{print $9}'access.log |sort|uniq-c |sort-nr
四、進(jìn)程管理與服務(wù)控制
4.1 進(jìn)程管理
# 進(jìn)程控制
kill-9 PID # 強(qiáng)制終止進(jìn)程
killall nginx # 終止所有nginx進(jìn)程
pkill -f"python script" # 按名稱模式終止進(jìn)程
pgrep -f nginx # 查找進(jìn)程PID
# 后臺(tái)任務(wù)管理
nohupcommand& # 后臺(tái)運(yùn)行命令
jobs # 查看后臺(tái)任務(wù)
bg%1 # 將任務(wù)轉(zhuǎn)到后臺(tái)
fg%1 # 將任務(wù)調(diào)到前臺(tái)
4.2 系統(tǒng)服務(wù)管理
# SystemD服務(wù)管理
systemctl start nginx # 啟動(dòng)服務(wù)
systemctl stop nginx # 停止服務(wù)
systemctl restart nginx # 重啟服務(wù)
systemctl reload nginx # 重載配置
systemctlenablenginx # 設(shè)置開機(jī)自啟
systemctldisablenginx # 禁止開機(jī)自啟
systemctl status nginx # 查看服務(wù)狀態(tài)
# 查看服務(wù)日志
journalctl -u nginx # 查看nginx服務(wù)日志
journalctl -f -u nginx # 實(shí)時(shí)跟蹤日志
五、網(wǎng)絡(luò)配置與故障排查
5.1 網(wǎng)絡(luò)配置
# IP配置
ip addr show # 查看IP地址
ip route show # 查看路由表
iplinkshow # 查看網(wǎng)絡(luò)接口
# 傳統(tǒng)網(wǎng)絡(luò)命令
ifconfig eth0 # 查看網(wǎng)卡信息
route -n # 查看路由表
arp -a # 查看ARP表
5.2 網(wǎng)絡(luò)故障排查
# 連通性測試
ping -c 4 google.com # 測試網(wǎng)絡(luò)連通性
traceroute google.com # 追蹤路由路徑
mtr google.com # 實(shí)時(shí)路由追蹤
# 端口測試
telnet 192.168.1.1 80 # 測試端口連通性
nc -zv 192.168.1.1 80 # 使用nc測試端口
六、壓縮與備份
6.1 文件壓縮
# tar命令
tar -czf backup.tar.gz /var/www/ # 創(chuàng)建壓縮包
tar -xzf backup.tar.gz # 解壓縮
tar -tzf backup.tar.gz # 查看壓縮包內(nèi)容
tar -czf backup-$(date+%Y%m%d).tar.gz /etc/ # 帶日期的備份
# 其他壓縮工具
zip -r backup.zip /var/www/ # 創(chuàng)建zip文件
unzip backup.zip # 解壓zip文件
gzip file.txt # 壓縮單個(gè)文件
gunzip file.txt.gz # 解壓縮
6.2 數(shù)據(jù)同步
# rsync數(shù)據(jù)同步
rsync -avz /var/www/ user@remote:/backup/ # 同步到遠(yuǎn)程服務(wù)器
rsync -avz --delete /var/www/ /backup/ # 同步并刪除目標(biāo)多余文件
rsync -avz --exclude='*.log'/var/www/ /backup/ # 排除日志文件
七、系統(tǒng)安全與用戶管理
7.1 用戶管理
# 用戶操作
useradd -m -s /bin/bash username # 創(chuàng)建用戶
usermod -aGsudousername # 添加用戶到sudo組
passwd username # 設(shè)置密碼
userdel -r username # 刪除用戶及主目錄
# 用戶信息查看
idusername # 查看用戶ID和組信息
who # 查看當(dāng)前登錄用戶
w # 查看用戶活動(dòng)
last # 查看登錄歷史
7.2 系統(tǒng)安全
# 系統(tǒng)日志檢查
tail-f /var/log/auth.log # 監(jiān)控登錄日志
grep"Failed password"/var/log/auth.log # 查找失敗登錄
grep"sudo"/var/log/auth.log # 查看sudo使用記錄
# 文件完整性檢查
md5sumfile.txt # 計(jì)算MD5值
sha256sumfile.txt # 計(jì)算SHA256值
八、高級(jí)命令技巧
8.1 命令組合與管道
# 復(fù)雜的命令組合
ps aux | grep nginx | grep -v grep | awk'{print $2}'| xargskill-9
# 查找nginx進(jìn)程并終止
cat/var/log/nginx/access.log | grep"GET"| awk'{print $1}'|sort|uniq-c |sort-nr |head-10
# 統(tǒng)計(jì)GET請(qǐng)求最多的IP
find /var/log -name"*.log"-execgrep -l"error"{} \; | xargsls-la
# 查找包含error的日志文件并顯示詳細(xì)信息
8.2 腳本化運(yùn)維
# 一鍵系統(tǒng)信息收集腳本
#!/bin/bash
echo"=== 系統(tǒng)信息 ==="> 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"=== 內(nèi)存信息 ===">> system_info.txt
free -h >> system_info.txt
echo"=== 磁盤信息 ===">> system_info.txt
df-h >> system_info.txt
echo"=== 網(wǎng)絡(luò)信息 ===">> system_info.txt
ip addr show >> system_info.txt
九、面試常見問題解答
9.1 性能調(diào)優(yōu)相關(guān)
Q: 如何查看系統(tǒng)負(fù)載?
uptime # 查看系統(tǒng)負(fù)載
cat/proc/loadavg # 詳細(xì)負(fù)載信息
w # 查看負(fù)載和用戶
Q: 如何排查CPU使用率過高?
top -p PID # 監(jiān)控特定進(jìn)程
strace -p PID # 跟蹤系統(tǒng)調(diào)用
perf top # 性能分析工具
9.2 存儲(chǔ)管理相關(guān)
Q: 如何找出占用空間最大的文件?
du-ah /var |sort-rh |head-20
find /var -typef -size +100M -execls-lh {} \;
Q: 如何監(jiān)控文件系統(tǒng)使用情況?
df-h # 查看磁盤使用率
inotifywait -m /var/log/ # 監(jiān)控文件變化
十、實(shí)戰(zhàn)場景演練
10.1 服務(wù)器故障排查流程
# 1. 系統(tǒng)基本信息檢查
uptime&& free -h &&df-h
# 2. 進(jìn)程狀態(tài)檢查
ps aux |head-20
top -n 1 |head-20
# 3. 網(wǎng)絡(luò)狀態(tài)檢查
netstat -tulpn | grep LISTEN
ss -tulpn
# 4. 日志檢查
tail-50 /var/log/messages
journalctl -xe
10.2 日常維護(hù)腳本
#!/bin/bash
# 系統(tǒng)健康檢查腳本
LOG_FILE="/var/log/health_check.log"
DATE=$(date'+%Y-%m-%d %H:%M:%S')
echo"[$DATE] 開始系統(tǒng)健康檢查">>$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
# 檢查內(nèi)存使用率
MEM_USAGE=$(free | grep Mem | awk'{print ($3/$2) * 100.0}')
if(( $(echo "$MEM_USAGE>90" | bc -l) ));then
echo"[$DATE] 警告:內(nèi)存使用率過高:$MEM_USAGE%">>$LOG_FILE
fi
# 檢查系統(tǒng)負(fù)載
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] 警告:系統(tǒng)負(fù)載過高:$LOAD_AVG">>$LOG_FILE
fi
echo"[$DATE] 系統(tǒng)健康檢查完成">>$LOG_FILE
總結(jié)
掌握這些Linux命令不僅能幫助你在面試中脫穎而出,更重要的是能在實(shí)際工作中提高效率,快速定位和解決問題。記住,命令只是工具,真正的技能在于理解系統(tǒng)原理,能夠根據(jù)實(shí)際情況靈活運(yùn)用這些命令。
作為工程師,建議你:
- 1. 多動(dòng)手實(shí)踐,在測試環(huán)境中反復(fù)練習(xí)
- 2. 理解每個(gè)命令的工作原理,不只是記憶用法
- 3. 學(xué)會(huì)組合使用命令,提高工作效率
- 4. 關(guān)注系統(tǒng)安全,養(yǎng)成良好的運(yùn)維習(xí)慣
- 5. 持續(xù)學(xué)習(xí)新的工具和技術(shù)
希望這篇文章能幫助你在Linux運(yùn)維的道路上更進(jìn)一步!
聲明:
本號(hào)對(duì)所有原創(chuàng)、轉(zhuǎn)載文章的陳述與觀點(diǎn)均保持中立,推送文章僅供讀者學(xué)習(xí)和交流。文章、圖片等版權(quán)歸原作者享有,如有侵權(quán),聯(lián)系刪除。
-
Linux
+關(guān)注
關(guān)注
88文章
11581瀏覽量
217174 -
測試工程師
+關(guān)注
關(guān)注
6文章
127瀏覽量
12996
發(fā)布評(píng)論請(qǐng)先 登錄
誠聘硬件測試工程師
誠聘硬件測試工程師
測試工程師的進(jìn)階
頂尖工程師們,都在用的App“神器”!
emc測試工程師前景分析_emc測試工程師待遇及崗位職責(zé)
測試工程師工作流程有哪些
如何定義測試工程師
軟件測試工程師的發(fā)展方向有哪些
軟件測試工程師的素質(zhì)
測試工程師怎樣和開發(fā)工程師進(jìn)行有效的交流
Linux下的stress-ng壓力測試工具介紹

測試工程師都在用的Linux命令清單(建議收藏)
評(píng)論