Linux系统查看日志命令journalctl的用法
一、Systemd运行原理
Systemd是Linux系统中的初始化系统,负责启动系统后的所有服务,并监视它们在系统运行期间的状态。它将系统和服务的启动过程抽象为单元(unit),并以单元的形式进行管理。这些单元包括服务单元(service)、挂载单元(mount)、设备单元(device)等。Systemd通过解析单元配置文件(通常位于/etc/systemd/system/
和/usr/lib/systemd/system/
目录下)来了解每个单元的启动顺序、依赖关系等信息,从而实现对系统资源的高效管理和调度。此外,Systemd还集成了journald
来管理日志系统,journalctl
作为工具用于检索和分析日志。
二、journalctl的用法
(一)查看所有日志
journalctl
该命令会输出系统中所有的日志条目,按时间顺序排列。如果希望不分页输出,可以加上--no-pager
选项。
(二)按时间倒序查看所有日志
journalctl -r
(三)查看最新的N条日志
journalctl -n N
例如,查看最新的10条日志:
journalctl -n 10
(四)实时查看新添加的日志条目
journalctl -f
类似于tail -f
命令,可以实时监控日志的更新。
(五)查看特定服务的日志
journalctl -u <服务名>
例如,查看nginx
服务的日志:
journalctl -u nginx
如果想实时查看特定服务的日志,可以将-f
选项与-u
选项结合使用:
journalctl -u nginx -f
(六)按时间范围过滤日志
可以通过--since
和--until
选项来指定时间范围。例如,查看自某时间以来的日志:
journalctl --since "YYYY-MM-DD HH:MM:SS"
查看某时间范围内的日志:
journalctl --since "YYYY-MM-DD" --until "YYYY-MM-DD"
也可以使用相对时间,如today
、yesterday
等。
(七)按优先级过滤日志
可以按优先级过滤日志,例如查看所有错误日志:
journalctl -p err
优先级选项包括:emerg
、alert
、crit
、err
、warning
、notice
、info
、debug
。
(八)按进程或用户过滤日志
可以按进程ID或用户ID过滤日志:
journalctl _PID=1234
journalctl _UID=1000
(九)按主机名或机器ID过滤日志
可以按主机名或机器ID过滤日志:
journalctl _HOSTNAME=hostname
journalctl _MACHINE_ID=machine-id
(十)按字段过滤日志
可以按特定字段过滤日志:
journalctl _SYSTEMD_UNIT=sshd.service
(十一)查看内核日志
journalctl -k
(十二)反向排序日志(最新的在前)
journalctl -r
(十三)查看磁盘日志占用情况
journalctl --disk-usage
(十四)查看特定启动的日志
查看当前启动以来的日志:
journalctl -b
查看上一次启动的日志:
journalctl -b -1
列出所有启动记录:
journalctl --list-boots
(十五)显示日志的详细解释
journalctl -x
(十六)以不同时区的时间查看日志条目
默认情况下,journalctl
以当前系统时区显示日志的时间。要以UTC时区查看日志,可以使用以下命令:
journalctl --utc
三、如何查看service的名字
可以使用以下命令来列出系统中的systemd服务:
systemctl list-units --type=service
四、示例
假设我们想查看nginx
服务在最近一次启动时的错误日志,可以使用以下命令:
journalctl -u nginx -b -1 -p err
该命令表示查看nginx
服务在上一次启动时的错误日志。