1.简介

有了 systemd 之后,由于这玩意儿是核心唤醒的,然后又是第一支执行的软
件,它可以主动调用 systemd-journald 来协助记载登录文件~ 因此在开机过程中的所有信
息,包括启动服务与服务若启动失败的情况等等,都可以直接被记录到 systemd-journald
里头去!

不过 systemd-journald 由于是使用于内存的登录文件记录方式,因此重新开机过
后,开机前的登录文件信息当然就不会被记载了。 为此,我们还是建议启动 rsyslogd 来
协助分类记录!也就是说, systemd-journald 用来管理与查询这次开机后的登录信息,而
rsyslogd 可以用来记录以前及现在的所以数据到磁盘文件中,方便未来进行查询喔!
tips:
虽然 systemd-journald 所记录的数据其实是在内存中,但是系统还是利
用文件的型态将它记录到 /run/log/ 下面!
不过我们从前面几章也知
道, /run 在 CentOS 7 其实是内存内的数据,所以重新开机过后,这个
/run/log 下面的数据当然就被刷新,旧的当然就不再存在了

2.journalctl

命令:

  1. [root@study ~]# journalctl [-nrpf] [--since TIME] [--until TIME] _optional
  2. 选项与参数:
  3. 默认会秀出全部的 log 内容,从旧的输出到最新的讯息
  4. -n :秀出最近的几行的意思~找最新的信息相当有用
  5. -r :反向输出,从最新的输出到最旧的数据
  6. -p :秀出后面所接的讯息重要性排序!请参考前一小节的 rsyslogd 信息
  7. -f :类似 tail -f 的功能,持续显示 journal 日志的内容(实时监测时相当有帮助!)
  8. --since --until:设置开始与结束的时间,让在该期间的数据输出而已
  9. _SYSTEMD_UNIT=unit.service :只输出 unit.service 的信息而已
  10. _COMM=bash :只输出与 bash 有关的信息
  11. _PID=pid :只输出 PID 号码的信息
  12. _UID=uid :只输出 UID uid 的信息
  13. SYSLOG_FACILITY=[0-23] :使用 syslog.h 规范的服务相对序号来调用出正确的数据!
  14. 范例一:秀出目前系统中所有的 journal 日志数据
  15. [root@study ~]# journalctl
  16. -- Logs begin at Mon 2015-08-17 18:37:52 CST, end at Wed 2015-08-19 00:01:01 CST. --
  17. Aug 17 18:37:52 study.centos.vbird systemd-journal[105]: Runtime journal is using 8.0M
  18. max
  19. 142.4M, leaving 213.6M of free 1.3G, current limit 142.4M).
  20. Aug 17 18:37:52 study.centos.vbird systemd-journal[105]: Runtime journal is using 8.0M
  21. max
  22. 142.4M, leaving 213.6M of free 1.3G, current limit 142.4M).
  23. Aug 17 18:37:52 study.centos.vbird kernel: Initializing cgroup subsys cpuset
  24. Aug 17 18:37:52 study.centos.vbird kernel: Initializing cgroup subsys cpu
  25. .....(中间省略).....
  26. Aug 19 00:01:01 study.centos.vbird run-parts
  27. (/etc/cron.hourly)[19268]: finished 0anacron
  28. Aug 19 00:01:01 study.centos.vbird run-parts
  29. (/etc/cron.hourly)[19270]: starting 0yum-hourly.cron
  30. Aug 19 00:01:01 study.centos.vbird run-parts
  31. (/etc/cron.hourly)[19274]: finished 0yum-hourly.cron
  32. # 从这次开机以来的所有数据都会显示出来!通过 less 一页页翻动给管理员查阅!数据量相当大!
  33. 范例二:(1)仅显示出 2015/08/18 整天以及(2)仅今天及(3)仅昨天的日志数据内容
  34. [root@study ~]# journalctl --since "2015-08-18 00:00:00" --until "2015-08-19 00:00:00"
  35. [root@study ~]# journalctl --since today
  36. [root@study ~]# journalctl --since yesterday --until today
  37. 范例三:只找出 crond.service 的数据,同时只列出最新的 10 笔即可
  38. [root@study ~]# journalctl _SYSTEMD_UNIT=crond.service -n 10
  39. 范例四:找出 su, login 执行的登录文件,同时只列出最新的 10 笔即可
  40. [root@study ~]# journalctl _COMM=su _COMM=login -n 10
  41. 范例五:找出讯息严重等级为错误 error 的讯息!
  42. [root@study ~]# journalctl -p err
  43. 范例六:找出跟登录服务 auth, authpriv 有关的登录文件讯息
  44. [root@study ~]# journalctl SYSLOG_FACILITY=4 SYSLOG_FACILITY=10
  45. # 更多关于 syslog_facility 的数据,请参考 18.2.1 小节的内容啰!

了解到登录文件的实时变化

# 第一号终端机,请使用下面的方式持续侦测系统! 
[root@study ~]# journalctl -f 
# 这时系统会好像卡住~其实不是卡住啦!是类似 tail -f 在持续的显示登录文件信息的!# 第二号终端机,使用下面的方式随便发一封 email 给系统上的帐号! 
[root@study ~]# echo "testing" | mail -s 'tset' dmtsai 
# 这时,你会发现到第一号终端机竟然一直输出一些讯息吧!没错!这就对了!