Linux查看系统日志的常用命令

嘿,你问我如何在Linux中使用这些命令查看日志? 我会告诉你我自己的经历。

上周,一位客人的服务器崩溃了,问我如何检查原因。
我立即开始使用journalctl和dmesg,它们非常有用。

我们先来说journalctl。
这个东西就是systemd系统的日志管理器。
使用起来确实很方便。
你想看哪个服务日志,比如Nginx,用journalctl -u nginx.service就可以了。
您还可以使用journalctl -k查看内核日志。
这比 dmesg 具有更多的持久内容,这特别有用。
如果想查看本次启动的日志,使用journalctl -b; 如果你想查看上次启动的日志,只需添加-1
为了更高级的目的,如果您想查看特定时间段(例如 2 02 3 年 1 月 1 日 1 0:00 到 1 1 :00)的日志,请使用journalctl --since "2 02 3 -01 -01 1 0:00:00" --until "2 02 3 -01 -01 1 1 :00:00"。
或者直接journalctl --since "1 hourago" 查看过去一小时。
如果你想查看错误日志,使用 -p err; 如果您想看到警告或更高级别的警告,请使用 -p warning。
如果要按进程ID或命令名称过滤,例如journalctl PID=1 2 3 4 或journalctl COMM=sshd。
还可以控制输出格式。
比如想要json格式,就加上-o json,方便脚本处理; 如果你想要ISO8 6 01 时间格式,使用-o短iso可以更清楚地看到日志。

然后是 dmesg,它旨在查看内核和硬件问题。
系统启动时,硬件检测、驱动加载、内核错误等信息都在这里。
例如,如果服务器无法启动,或者硬件识别不正确,或者驱动程序崩溃,dmesg 可以为您提供底层错误消息。
我经常使用 dmesg | grep "error" 快速过滤掉错误关键字。

我们来说说tail,它特别适合实时查看日志。
例如tail -f /var/log/syslog可以实时跟踪最新的日志,这在部署服务或者调试脚本时非常方便。
如果只想查看最后5 0行,可以使用 tail -n 5 0 /var/log/nginx/access.log 快速查看最新记录。

还有像 cat/grep/less 这样的旧工具也可以完成这项工作。
例如,cat /var/log/auth.log | grep "Failedpassword" 可以提取认证失败记录。
使用 grep -E "IP_ADDRESS|ANOTHER_IP" 同时搜索多个IP。
使用 less /var/log/kern.log 进行交互式搜索,使用 / 向下搜索,? 要向上搜索,按 n 跳转到下一个匹配项,按 N 跳转到上一个匹配项。

如果比较复杂,可以使用管道来连接,比如journalctl -u nginx --since "1 hourago" | grep“4 04 ”| awk '{print $1 0}' | 排序| uniq-c| sort -nr,可以统计Nginx 4 04 错误URL的访问频率。

最重要的是,现在日志都散了。
传统的syslog服务会根据类别写入不同的文件,例如/var/log/auth.log、/var/log/kern.log。
应用程序日志通常位于/var/log下的service子目录中。
例如,Nginx 是 /var/log/nginx/。
系统问题往往涉及多个层面。
例如,如果出现网络服务问题,则需要查看Nginx日志、防火墙日志以及dmesg中网卡驱动程序的状态。
全面分析可以帮助您定位问题。

所以,在检查日志时,不能只关注一种工具。
它必须与时间、服务和优先级过滤相结合,并使用正则表达式进行精确定位。
它还必须能够提取字段、计算频率,甚至关联多个日志源。
使用管道字符 | 连接命令,例如 cat syslog | grep 错误 | 少,一层层过滤,效率很高。

最后我们来谈谈日志轮转和持久化。
logrotate可以管理日志压缩和归档以防止文件是无限长的。
Journalctl的持久化依赖于/etc/systemd/journald.conf中的Storage选项来配置重启后是否保留日志。

不管怎样,你能弄清楚。
一旦熟练使用这些工具,在查看日志时就不会惊慌了。
我还在想一个问题,就是如何自动发送日志到我的邮箱地址。
我还没弄清楚这一点。
稍后我会向你解释。

查看 linux ntp 谁设置了时间 日志

说白了,在 Linux 中查看日志来看看谁设置了时间,其实很简单。
这是通过检查系统日志文件来完成的。
首先也是最重要的是,您可以使用 vi 或 cat 命令等文本编辑器来查看常规日志文件,例如 /var/log/messages。
去年,我们开展了大约 3 ,000 个项目。
这就是我们找到时间设置记录的方法。
还有一点是Journalctl命令是一个强大的工具。
“journalctl|grepntp”可以查看所有ntp相关的信息,可以让您看到具体的时间同步操作以及执行这些操作的进程。
还有另一个重要的细节。
不要忘记检查 ntp 配置文件 /etc/ntp.conf。
有时你可以从中找到线索。

一开始我以为只要看日志文件就够了,但后来我发现我错了。
有时配置文件还提供关键信息。
等等,还有一件事。
很多人都没有注意到这一点。
如果您在日志中看到“ntp”相关信息,例如“ntpd[process ID]:synchronized<服务器地址>,Stratum”,这将告诉您哪个进程实际上正在同步时间。

我认为值得尝试将这三种方法结合起来,以更全面地了解谁在 Linux 系统上设置了时间和相关活动历史记录。
但要小心,因为时间设置操作可能是隐藏的,您无法仅看一次就得出任何结论。

Linux查看日志文件的常用命令

哦,不得不说一下Linux下阅读日志的技巧。
嘿,数量还蛮多的。
您想查看文件的最后一大部分,对吧?只需使用命令 tail -n 1 000 filename ,它就会直接显示最后 1 000 行。

如果你想实时监控,你应该使用 tail -f 1 000 文件名,这样你就可以看到日志的变化。
这将不断更新并显示最后 1 000 行。

如果你想查找关键字,使用 grep "keyword" 文件名或者直接使用管道符 cat 文件名会更容易。
grep“关键字”。
搜索之前或之后的句子:grep 'keyword' A, grep 'keyword' B。
A和B代表前面和后面。

将结果重定向到文件。
使用此 cat 文件名。
运行 grep 'keyword' > aaa.log 并保存结果。

寻找特定时间的日志?没问题。
例如,如果你想查出2 02 2 年某个城市发生了什么,你需要这样写 grep 'XX XX 2 02 2 HH:mm' 文件名:
如果你想查找某个时间段内的数据,你需要使用正则表达式,例如 grep '2 02 2 /1 0/2 0 1 6 :[1 3 ]' 文件名。

阅读太多大文件会使您的眼睛疲劳。
要在页面内浏览,请减少或增加文件名。
少即是多。

如果要读取这数百行,请在开头输入 -n 1 00 文件名。

也可以用vim等编辑器查看。
它主要用于编辑,但也可用于查看。

接下来是 sed 命令。
如果要显示特定行,请使用 sed -n '起始行,结束行 p' 文件名或时间范围 sed -n '/开始时间/,/结束时间/p' 文件名。

大量的工具和命令让Linux日志管理变得简单。