journalctl 的基本用法
systemd 不仅提供了比 sysvinit 更快的启动速度,还让日志系统在更早的时候启动起来,可以记录内核初始化阶段、内存初始化阶段、前期启动步骤以及主要的系统执行过程的日志。所以,以前那种需要通过对显示屏拍照或者暂停系统来调试程序的日子已经一去不复返啦。
systemd 的日志文件都被放在 /var/log 目录。如果你想使用它的日志功能,需要执行一些命令,因为 Debian 没有打开日志功能。命令如下:
复制代码# addgroup --system systemd-journal
# mkdir -p /var/log/journal
# chown root:systemd-journal /var/log/journal
# gpasswd -a $user systemd-journal
通过上面的设置,你就可以以普通用户权限使用 journal 软件查看日志。使用 journalctl 查询日志可以获得一些比 syslog 软件更方便的玩法:
journalctl --all - 显示系统上所有日志,以及它的用户
journalctl -f - 监视系统日志的变化(类似 tail -f /var/log/messages 的效果)
journalctl -b - 显示系统启动以后的日志
journalctl -k -b -1 - 显示上一次(-b -1)系统启动前产生的内核日志
journalctl -b -p err - 显示系统启动后产生的“ERROR”日志
journalctl --since=yesterday - 当系统不会经常重启的时候,这条命令能提供比 -b 更短的日志记录
journalctl -u cron.service --since='2014-07-06 07:00' --until='2014-07-06 08:23' - 显示 cron 服务在某个时间段内打印出来的日志
journalctl -p 2 --since=today - 显示优先级别为2以内的日志,包含 emerg、alert、crit三个级别。所有日志级别有: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7)
journalctl > yourlog.log - 将二进制日志文件复制成文本文件并保存到当前目录
Journal 和 syslog 可以很好的共存。而另一方面,一旦你习惯了操作 journal,你也可以卸载掉所有 syslog 的软件,比如 rsyslog 或 syslog-ng。
如果想要得到更详细的日志信息,你可以在内核启动参数上添加“systemd.log_level=debug”,然后运行下面的命令:
复制代码# journalctl -alb
你也可以编辑 /etc/systemd/system.conf 文件来修改日志级别。
利用 systemd 分析系统启动过程
systemd 可以让你能更有效地分析和优化你的系统启动过程:
systemd-analyze - 显示本次启动系统过程中用户态和内核态所花的时间
systemd-analyze blame - 显示每个启动项所花费的时间明细
systemd-analyze critical-chain - 按时间顺序打印 UNIT 树










