掌握日志分析命令,是提高运维效率的关键。本文精选的30个命令,能帮你高效收集日志、精准分析异常、实时监控系统状态。
在不断迭代的IT运维中,面对分散、海量的日志文件,问题定位费时、监控效率低、异常检测难点频现。如何高效提取关键信息?
一、日志文件的收集与定位
1. find
功能:按文件名、类型、大小或时间戳递归查找日志文件。
示例代码:
find /var/log -name "*.log" -mtime -1
输出:
/var/log/syslog
/var/log/auth.log
/var/log/nginx/access.log
2. locate
功能:使用预建数据库查找日志文件路径。
示例代码:
locate access.log
输出:
/var/log/nginx/access.log
/home/user/temp/access.log
3. which
功能:显示指定命令的绝对路径,确认工具的安装位置。
示例代码:
which grep
输出:
/usr/bin/grep
4. whereis
功能:显示命令的二进制文件位置、源码文件及相关手册页。
示例代码:
whereis awk
输出:
awk: /usr/bin/awk /usr/share/man/man1/awk.1.gz
5. stat
功能:显示文件的详细信息,包括访问时间、大小和权限。
示例代码:
stat /var/log/syslog
输出:
File: /var/log/syslog
Size: 20480 Blocks: 48 IO Block: 4096 regular file
Device: 802h/2050d Inode: 394857 Links: 1
Access: 2024-01-01 10:00:00.000000000 +0000
Modify: 2024-01-01 09:59:00.000000000 +0000
Change: 2024-01-01 09:59:01.000000000 +0000
二、日志文件的基础查看
6. cat
功能:输出文件的全部内容。
示例代码:
cat /var/log/messages
输出:
Jan 1 10:00:01 server1 systemd: Starting Cleanup of Temporary Directories...
Jan 1 10:00:01 server1 systemd: Finished Cleanup of Temporary Directories.
7. tac
功能:逆序输出文件内容,适用于查看最新的日志。
示例代码:
tac /var/log/syslog | head -5
输出:
Jan 1 11:10:05 server1 sshd[2003]: Connection accepted.
Jan 1 11:10:03 server1 systemd: Started User Service.
Jan 1 11:10:02 server1 sshd[2002]: New login session started.
8. head
功能:输出文件的开头部分内容。
示例代码:
head -n 3 /var/log/nginx/access.log
输出:
- 192.168.1.10 - - [01/Jan/2024:10:00:00 +0000] "GET /index.html HTTP/1.1" 200 512
- 192.168.1.11 - - [01/Jan/2024:10:00:01 +0000] "POST /api/login HTTP/1.1" 403 1024
- 192.168.1.12 - - [01/Jan/2024:10:00:02 +0000] "GET /favicon.ico HTTP/1.1" 404 256
9. tail
功能:输出文件的末尾部分内容,可实时跟踪新增内容。
示例代码:
tail -f /var/log/nginx/error.log
输出:
- 2024/01/01 11:20:00 [error] 20201#0: *10 open() "/var/www/html/favicon.ico" failed (2: No such file or directory)
- 2024/01/01 11:21:03 [error] 20201#0: *11 file not found

10. less功能:分页浏览文件,可搜索关键词。
示例代码:
less /var/log/dmesg
输出:
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
11. more
功能:简单的分页查看工具。
示例代码:
more /var/log/auth.log
输出:
Jan 1 10:00:10 server1 sshd[1000]: Accepted password for user from 192.168.1.100 port 12345 ssh2
--More--
12. nl
功能:为文件的输出内容添加行号。
示例代码:
nl /var/log/nginx/access.log | head
输出:
1 192.168.1.10 - - [01/Jan/2024:10:00:00] "GET /index.html HTTP/1.1" 200
2 192.168.1.11 - - [01/Jan/2024:10:00:01] "POST /api/login HTTP/1.1" 403
3 192.168.1.12 - - [01/Jan/2024:10:00:02] "GET /favicon.ico HTTP/1.1" 404
三、日志的核心文本解析与过滤
13. grep
功能:通过正则表达式过滤日志内容。
示例代码:
grep -i "error" /var/log/nginx/error.log
输出:
- 2024/01/01 10:00:00 [error] 20201#0: file not found
- 2024/01/01 10:01:00 [error] 20201#0: connection timed out
14. awk
功能:按字段处理文本内容,适合格式化提取或统计。
示例代码:
awk '{print $1, $4}' /var/log/nginx/access.log
输出:
- 192.168.1.10 "GET
- 192.168.1.11 "POST
- 192.168.1.12 "GET
15. sed
功能:支持插入、删除和替换功能的流式编辑器。
示例代码:
sed 's/404/NOT FOUND/' /var/log/nginx/access.log
输出:
- 192.168.1.12 - - [01/Jan/2024:10:00:02 +0000] "GET /favicon.ico HTTP/1.1" NOT FOUND 256
16. cut
功能:按字段提取文本。
示例代码:
cut -d' ' -f1,3 /var/log/nginx/access.log
输出:
- 192.168.1.10 01/Jan/2024:10:00:00
- 192.168.1.11 01/Jan/2024:10:00:01
- 192.168.1.12 01/Jan/2024:10:00:02
17. uniq
功能:对重复行进行去重或统计。
示例代码:
sort /var/log/nginx/access.log | uniq -c
输出:
- 1 192.168.1.10 - "GET /index.html"
- 2 192.168.1.11 - "POST /api/login"
四、统计与汇总
18. wc
功能:统计文件的行数、单词数及字节数。
示例代码:
wc -l /var/log/nginx/access.log
输出:
- 50 /var/log/nginx/access.log
接下来的命令将在以上分类完成补充。继续提炼组合复杂操作工具,确保满足 30 条命令目标,涵盖所有运维场景需求。以下是补充完整并整理的 30 个命令,包括模拟输出,为日志运维场景提供一站式参考:
四、统计与汇总
19. sort
功能:对文本内容按升序或降序排序。常用参数:
- -n:按数值排序。
- -r:降序排序。
- -k:指定排序字段。
示例代码:
sort -k 1 access.log | head -5
输出:
- 192.168.1.10 - GET /index.html 200
- 192.168.1.11 - POST /api/login 403
- 192.168.1.12 - GET /favicon.ico 404
- 192.168.1.13 - GET /about 200
- 192.168.1.14 - GET /contact 200
20. tr
功能:字符转换和删除工具。
示例代码:
cat access.log | tr '[a-z]' '[A-Z]'
输出:
- 192.168.1.10 - - [01/JAN/2024:10:00:00 +0000] "GET /INDEX.HTML HTTP/1.1" 200 1024
- 192.168.1.11 - - [01/JAN/2024:10:00:01 +0000] "POST /API/LOGIN HTTP/1.1" 403 512
21. paste
功能:水平合并多个文件内容。
示例代码:
paste file1.log file2.log
输出:
Line 1 from file1 Line 1 from file2
Line 2 from file1 Line 2 from file2
22. diff
功能:比较两个文件的差异,适合日志版本比对。
示例代码:
diff log_v1.log log_v2.log
输出:
- 1c1
< Original Line
> Updated Line
23. uniq
功能:统计重复行。
示例代码:
sort access.log | uniq -c
输出:
- 10 192.168.1.10 - GET /index.html 200
- 15 192.168.1.11 - POST /api/login 403
- 5 192.168.1.12 - GET /favicon.ico 404
五、实时监控
24. tail -f
功能:实时追踪文件新增内容,监控日志动态更新。
示例代码:
tail -f /var/log/nginx/error.log
输出:
- 2024/01/01 12:10:05 [error] 2001#0: file not found
- 2024/01/01 12:12:00 [error] 2002#0: connection timeout
25. less +F
功能:在 less 中实时跟踪文件更新(类似 tail -f)。
示例代码:
less +F /var/log/syslog
输出:
Jan 1 12:01:00 server1 sshd[1020]: new session opened
Jan 1 12:02:00 server1 kernel: CPU temperature high
26. watch
功能:周期性运行命令,适合实时监控。
示例代码:
watch -n 2 "tail -n 5 /var/log/kern.log"
输出:
Every 2.0s: tail -n 5 /var/log/kern.log
Jan 1 12:14:00 server1 kernel: CPU load high
Jan 1 12:16:00 server1 kernel: Disk I/O error
27. journalctl
功能:查看由 systemd 管理的日志。
示例代码:
journalctl -u nginx --since "2024-01-01 00:00:00"
输出:
-- Logs begin at Tue 2024-01-01 00:00:00 --
Jan 01 12:00:10 nginx[1200]: Starting nginx server...
Jan 01 12:01:00 nginx[1200]: Listening on port 80
28. dmesg
功能:查看系统启动信息及内核日志,适合硬件问题诊断。
示例代码:
dmesg | tail -n 5
输出:
[ 500.254768] CPU1: Core temperature above threshold
[ 500.254778] CPU1: Device throttled
29. multitail
功能:在一个窗口里同时监控多个日志文件,支持高亮。
示例代码:
multitail -i /var/log/nginx/access.log -i /var/log/nginx/error.log
输出:
==> /var/log/nginx/access.log <==
- 192.168.1.10 - GET /index.html 200
==> /var/log/nginx/error.log <==
[error] 2002#0: connection timeout
30. iotop
功能:监控系统磁盘 I/O,适合定位高 I/O 负载进程(需权限)。
示例代码:
sudo iotop
输出:
312 user 2.00 M/s 1.20 M/s apache2
317 mysql 1.50 M/s 0.30 M/s mysqld
掌握日志分析命令,是提高运维效率的关键。本文精选的30个命令,能帮你高效收集日志、精准分析异常、实时监控系统状态。在实践中熟悉和组合运用这些工具,将让你从容应对复杂的日志场景。
















- 最新
- 最热
只看作者