journalctl是Linux系统下排查服务日志的核心工具,通过-u参数可定位特定服务日志,结合-f实现实时追踪,-p按级别筛选错误信息,--since和--until支持时间段过滤,组合使用可高效定位问题;为避免日志重启后丢失,需配置/etc/systemd/journald.conf中Storage=persistent并创建/var/log/journal目录以实现持久化存储;此外,journalctl支持查看内核日志(-k)、按PID或可执行文件路径筛选、扩展错误详情(-xe)等高级功能,结合systemctl status可快速诊断系统故障,是系统运维中不可或缺的日志分析利器。

在Linux系统上,如果你想查看服务日志,
journalctl
说实话,刚接触
journalctl
tail -f /var/log/syslog
最基本的用法,当然就是直接敲入
journalctl
journalctl -u nginx.service
-u
tail -f
-f
journalctl -f -u sshd.service
journalctl -p err
emerg
alert
crit
err
warning
notice
info
debug
err
warning
journalctl -b -1
-b 0
--since
--until
journalctl --since "2 hours ago"
journalctl --since "2023-10-26 10:00:00" --until "2023-10-26 10:30:00"
这些命令的组合使用,基本上能满足日常大部分的日志查看需求了。
在实际运维中,最常见的场景就是某个服务出了问题,我们需要迅速从海量日志中找出相关的线索。
journalctl
我平时排查问题,最头疼的就是日志太多,不知道从何看起。所以,学会组合使用筛选条件是关键。
比如,我想看Nginx服务在过去一个小时内所有的错误或警告信息:
journalctl -u nginx.service -p err -p warning --since "1 hour ago"
这里我用了两个
-p
--output=cat
journalctl
grep
journalctl -u myapp.service --since "yesterday" --until "now" --output=cat | grep "database connection failed"
这种管道操作结合
grep
journalctl
journalctl _PID=12345
这比手动翻找要快得多,能省下不少时间。记住,越是精确的筛选条件,你就能越快地定位到问题所在。
这个问题我当初也遇到过,一度让我很困惑。系统重启后,之前的日志就没了,感觉就像白查了一样。这其实是
journald
内容:使用Bundle在Activity间传递数据、Log与DDMS(查看Log等信息)、Activity生命周期、Android应用开发4使用Service、如何使用服务、服务生命周期、进程生命周期、使用服务进行音乐播放、AndroidUI布局等……
0
默认情况下,
journald
/run/log/journal
/run
要让
journalctl
/var/log/journal
journald
/run/log/journal
/var/log/journal
你可以手动创建这个目录,然后重启
systemd-journald
sudo mkdir -p /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal # 确保权限正确 sudo systemctl restart systemd-journald
或者,更推荐的方式是修改
journald
/etc/systemd/journald.conf
[Journal]
Storage
persistent
# /etc/systemd/journald.conf [Journal] Storage=persistent
保存文件后,同样需要重启
systemd-journald
sudo systemctl restart systemd-journald
这样设置后,即使你的系统经历了多次重启,历史日志也能完整地保留下来,这对于后续的问题追溯和审计工作至关重要。我个人觉得,对于任何生产环境的服务器,日志持久化都是一个必须配置项,不然出了问题,连“案发现场”都没了。
journalctl
journalctl
我个人在排查一些比较棘手的问题时,经常会用到以下几个高级技巧:
journalctl -k
-b
journalctl -k -b -1
-x
-xe
journalctl -u myapp.service -xe
journalctl
journalctl _EXE=/usr/bin/python3
systemctl status
systemctl status <service_name>
journalctl -u <service_name> -xe --since "10 minutes ago"
journalctl
_SYSTEMD_UNIT
_COMM
_PID
_UID
journalctl -F
以上就是Linux如何使用journalctl查看服务日志的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号