【Linux】会这30 个日志命令 !运维功底深厚

掌握日志分析命令,是提高运维效率的关键。本文精选的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

【Linux】会这30 个日志命令 !运维功底深厚

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个命令,能帮你高效收集日志、精准分析异常、实时监控系统状态。在实践中熟悉和组合运用这些工具,将让你从容应对复杂的日志场景。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 共1条

请登录后发表评论