Linux日志命令大全:从日志小白到排查高手
引言:日志的那些事儿
大家好!作为一名Linux用户,你是否曾经遇到过这样的情况:
- 网站突然挂了,一脸懵逼不知道发生了什么
- 系统变得奇慢无比,却找不到原因
- 安全警报响了,却不知道谁在搞事情
别担心!Linux的日志系统就像系统的”日记本”,记录着系统的一举一动。今天,我就带你掌握阅读这本”日记”的神奇技能!
📝 基础日志命令四剑客
1. tail - 实时追踪小能手
基本用法:
tail /var/log/syslog
tail -n 50 /var/log/auth.log
tail -f /var/log/nginx/access.log
|
进阶玩法:
tail -f /var/log/nginx/access.log | grep --color "404"
tail -f /var/log/nginx/access.log -f /var/log/nginx/error.log
tail -n +100 /var/log/syslog
|
2. head - 只看开头的好奇宝宝
基本用法:
head /var/log/bootstrap.log
head -n 20 /var/log/dpkg.log
|
实用场景:
head -n 30 /var/log/apt/history.log
grep -B 5 "error" /var/log/syslog | head -n 20
|
3. cat - 直来直去的实在人
基本用法:
cat /var/log/bootstrap.log
cat -n /var/log/install.log
|
实用组合拳:
cat -n /var/log/syslog | tail -20
cat /var/long/log/file.log | less
|
4. less/more - 优雅的浏览专家
基本用法:
less /var/log/syslog
more /var/log/syslog
|
less的超级技巧:
在less中,你可以使用: /关键词 - 搜索 n - 下一个匹配项 N - 上一个匹配项 G - 跳到文件末尾 g - 跳到文件开头 q - 退出 F - 实时追踪模式(类似tail -f)
|
🔍 高级搜索与过滤大师
5. grep - 日志搜索的瑞士军刀
基础搜索:
grep "error" /var/log/syslog
grep -i "error" /var/log/syslog
grep -n "Failed" /var/log/auth.log
|
高级搜索技巧:
grep -e "error" -e "warning" /var/log/syslog
grep -v "INFO" /var/log/application.log
grep -A 3 -B 3 "crash" /var/log/syslog
grep -r "database" /var/log/
|
6. awk - 文本处理魔术师
基本用法:
awk '{print $1, $4}' /var/log/nginx/access.log
awk '$9 == 404 {print $7}' /var/log/nginx/access.log
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
|
实战案例:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
|
7. sed - 流编辑大师
实用技巧:
sed -n '/2023-10-01 14:00:00/,/2023-10-01 15:00:00/p' /var/log/syslog
sed 's/error/ERROR/g' /var/log/application.log
sed '/debug/d' /var/log/application.log
|
🎯 实战场景大集合
场景1:实时监控网站访问
tail -f /var/log/nginx/access.log | awk '{ if($9 == "404") print "\033[33m" $0 "\033[0m"; else if($9 == "500") print "\033[31m" $0 "\033[0m"; else print $0 }'
|
场景2:分析系统登录情况
grep "Accepted" /var/log/auth.log | tail -10
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn
tail -f /var/log/auth.log | grep --color -E "(Accepted|Failed)"
|
场景3:排查系统故障
grep -i "error\|fail\|critical" /var/log/syslog | tail -20
dmesg | grep -i "disk\|memory\|error"
journalctl -u nginx.service --since "1 hour ago"
|
场景4:性能监控
ps aux --sort=-%mem | head -10
cat /var/log/syslog | grep "load average"
watch -n 1 'echo "Memory:" && free -h && echo "Disk:" && df -h /'
|
🛠️ 专业工具推荐
8. journalctl - Systemd日志专家
journalctl
journalctl -u nginx
journalctl -f
journalctl --since today
journalctl --since "2023-10-01 09:00:00" --until "2023-10-01 17:00:00"
journalctl -p err journalctl -p 0..4
|
9. logrotate - 日志管理管家
查看日志轮转配置:
cat /etc/logrotate.conf ls /etc/logrotate.d/
|
💡 实用小贴士
自定义日志监控脚本
#!/bin/bash
LOG_FILE="/var/log/application.log" ALERT_EMAIL="admin@company.com"
tail -F $LOG_FILE | while read line do if echo "$line" | grep -q "CRITICAL"; then echo "$line" | mail -s "CRITICAL ERROR DETECTED" $ALERT_EMAIL echo "[$(date)] CRITICAL ERROR: $line" >> /var/log/monitor.log fi done
|
彩色输出让日志更易读
alias tail-error='tail -f /var/log/syslog | grep --color -E "(ERROR|WARNING|CRITICAL)"' alias grep-error='grep --color -E "(ERROR|WARNING|CRITICAL)"'
|
🎓 总结表格
| 命令 |
主要用途 |
使用频率 |
难度级别 |
tail -f |
实时监控 |
⭐⭐⭐⭐⭐ |
入门 |
grep |
关键词搜索 |
⭐⭐⭐⭐⭐ |
入门 |
less |
浏览大文件 |
⭐⭐⭐⭐ |
入门 |
awk |
数据分析 |
⭐⭐⭐ |
进阶 |
journalctl |
Systemd日志 |
⭐⭐⭐⭐ |
中级 |
sed |
文本处理 |
⭐⭐ |
进阶 |
结语
掌握了这些日志命令,你就拥有了排查系统问题的”火眼金睛”。记住,优秀的系统管理员不是不会遇到问题,而是能够快速找到并解决问题。
日志就像系统的”自白书”,学会倾听它们的声音,你就能成为真正的Linux高手!
Happy logging! 🚀
PS: 如果你在实战中遇到有趣的日志问题,欢迎分享你的排查故事!