docker logs 查看错误日志前后20行内

docker 日志容器名称 | grep -C2 0 "error"
这是一个陷阱。
调整容器名称和“错误”。

linux日志查询常用命令

等等 昨晚一位朋友帮我解决了一些服务器问题。
他突然报错,所有日志都是“连接超时” 我直接 grep "connection timeout"/var/log/system.log ,快速查找了十几行,发现数据库连接池已经耗尽。
这个技巧比让他逐个点击文件还要快。

但有趣的是,后来我尝试了tail -f,发现实时监控更直观。
例如,当nginx access.log添加新请求时,您可以实时看到IP和流量反弹。
然而,有一个缺陷。
朋友的系统上同时打开了两条记录。
当使用 tail -f 时,实际上是合并了两条服务记录。
我花了一段时间才意识到管道字符被滥用了。

突然想到用awk。
在使用sed替换IP之前,总感觉像用橡皮擦擦字一样。
直接在列上运行 awk 更加优雅。
例如,使用 awk '{print $1 , $4 }' 查看用户和请求方法比运行 sed 方便得多。
但是ifk条件写得不好很容易逃脱。
上次写了一个脚本过滤掉特定的状态码,结果就是用换行符当字段,日志完全乱了。

journalctl是systemd的绝活;但是使用的时候会让人头晕。
当我上次检查 docker 日志时,journalctl -u docker.service ——因为“昨天”实际上检索了所有内核消息。
最后不得不添加 -p err 来修复它。
然而,这个工具是通用的。
有朋友说用来检查网络丢包比iptraf快三倍。

现在的日志更加复杂。
我记得十年前还好,但现在 awk sed journalctl 已经变了。
但有一件事我还是不明白。
为什么使用 grep 来检查“错误”?然而,有时会跳过关键行。
系统日志有隐藏格式吗?

Linux诊断机器故障工具—dmesg命令

dmesg 在 Linux 中非常重要。
它是一个查看核心发生情况的工具。

1 .原因是什么? 1 .如何检查硬件是否有问题? 例如,如果硬盘、网络或存储卡出现故障,dmesg 可以告诉您存在一个问题。
上次我的服务器硬盘崩溃时,我只是在 dmesg 中看到了“I/O 错误”一词。
2 . 硬件安装是否正确? 当系统启动时,它会自动检查您拥有的硬件,并且 dmesg 可以列出您的计算机上安装的硬件。
When I run the server, I like to see dmesg when I turn it on so that the memory module and graphics card are recognized. 3 . 启动过程中发生了什么? 它会在整个启动过程中保留内核日志,dmesg可以显示关键步骤是否正常。
上次同事的系统启动时报错,通过dmesg检测到init进程卡住了。

2 如何使用? 1 .词语的使用 直接输入/bin/dmesg即可,默认显示最后8 1 9 6 字节。
我通常将 dmesg > mail.txt 日志保存在一个文件中,这样我就可以慢慢地阅读它们。
2 . 参数设置 -s1 6 3 8 4 可以将缓冲区扩展到1 6 3 8 4 字节,-n3 只会读取紧急和错误消息,-c读取后会清除。
这些参数都很实用。
表3 .调整 dmesg |加号或 dmesg | less 可以分页查看,dmesg -H 可以改变位置指示。
我通常使用 dmesg -H,否则我会在看时间指示时感到困惑。
4 .筛选技巧 使用 dmesg | head -2 0 表示前 2 0 行,dmesg | tail -2 0 表示最后 2 0 行。
tail -f 太可怕了。
您可以实时看到新添加的文件。
我在调试网络问题时经常使用它。
如果你想查找网卡信息,使用 dmesg | grep eth0。
如果您想查找内存问题,请使用 dmesg | grep~i,记录。

3 典型问题排查 1 .你不认识以前的世界是什么 dmesg | grep sda,如果看到错误机器未就绪,可能是磁盘先前损坏或数据线未正确插入。
上次帮客户解决硬盘问题的时候,在dmesg中看到一条信息,提示sda0挂载失败。
2 . USB device driver dmesg | grep -i USB。
如果复位失败,请检查USB口电源或驱动程序。
当我将 USB 闪存驱动器插入计算机时,有时会在 dmesg 中收到此提示。
3 、内存故障 dmesg | grep -i,内存,如果看到内存错误或ECC错误已纠正,请快速备份数据。
我看到ECC服务器的内存错误并切断了所有内存。
4 .不要连接网络 dmesg | grep eth,如果看到连接断开或 DHCP 超时,很可能是因为网线设置不正确或 IP 设置不正确。
我遇到过很多网络问题,基本上我总是首先查看 dmesg。

4 注意事项 1 . 权限问题 您需要 root 许可证才能查看完整日志。
普通用户只能看到其中的一部分。
有时我使用ssh远程查看dmesg,我先使用sudo。
2 . 保存日志 After the restart, the dmesg file will be cleared and important logs will be saved to the files.我通常保存到/var/log/dmesg.log。
3 .其他工具 复杂的问题可以结合journalctl -k(Systemd系统)或者lsblk和lspci命令来查看。
在排查问题时,我经常将 dmesg 和journalctl 一起使用。

不管怎样,使用dmesg后,硬件故障排除变得更加有效。

linux下查找日志的技巧

老实说,在Linux系统中查找注册表非常简单,但复杂之处在于如何快速定位问题。
我们先来说说最重要的事情。
进入系统日志目录。
所有服务日志通常位于 /var/log/ 目录中。
比如我们去年跑的项目大概有3 000条记录,都在这里。

查看特定日志文件也很重要。
例如,/var/log/secure 记录系统登录访问数据,而/message 记录系统启动时发生的几乎所有错误。
去年项目上线的时候,我们通过查阅这两份文件,很快就发现了几个关键问题。

另一个重要的细节是 tail 和 head 命令的使用。
tail-n1 0filename.log 可以帮助您在日志末尾显示最后 1 0 行,这对于检测最新的错误消息非常有用。
head-n2 0filename.log 检查前 2 0 行。
有时问题一开始就被隐藏起来。

一开始我认为这些技术就足够了,但后来我发现它们是错误的,我不得不使用 grep 命令。
例如,在去年的项目中,我们经常使用 cat-nfilename.log|grep "1 .0.0" 来搜索包含特定版本号的日志行。
等等,还有一件事,记住在 grep 后面正确使用引号,否则你可能会错过重要信息。

最后提醒一下,这一点很多人都没有注意。
使用这些命令时,请记住日志文件的大小。
搜索时非常大的文件可能会导致性能问题。
我认为值得一试。
从系统日志目录开始,逐渐移至特定日志文件。
通过结合这些技巧,相信你可以很快成为Linux日志搜索专家。