设为首页 收藏本站
查看: 1056|回复: 0

[经验分享] linux工具

[复制链接]

尚未签到

发表于 2019-2-17 14:05:19 | 显示全部楼层 |阅读模式
  有时候,当linux服务启动失败的时候,系统会提示我们使用journalctl -xe命令来查询详细信息,定位服务不能启动的原因。
  journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。
  命令格式为:

journalctl [OPTIONS…] [MATCHES…]

  journalctl 命令的路径为:

/bin/journalctl

  

可以使用man和-h来查询详细用法
man journalctl
journal ctl -h



输出所有日志
    不带任何选项时,journalctl 输出所有的日志记录,没啥鸟用


匹配(match)
    我们可以通过 "FIELD=VALUE" 的格式来匹配具体的日志记录, 如:_SYSTEMD_UNIT=sshd.service
journalctl _SYSTEMD_UNIT=sshd.service
日志信息的定义也类似一个实体类型,具体的信息被保存在各个对应的字段中,比如 MESSAGE、MESSAGE_ID、_PID、_UID、_HOSTNAME、_SYSTEMD_UNIT 等等(通过 man 7 systemd.journal-fields 可以查看所有可用的 match 字段)。因此可以通过这些字段的内容匹配相关的日志记录:


可以同时添加多个字段进行匹配,它们之间是与的关系,就是同时符合多个条件的记录才会被匹配,比如添加 PRIORITY 字段的匹配条件:
journalctl _SYSTEMD_UNIT=sshd.service PRIORITY=6



注意各个字段的取值,比如为 PRIORITY 设置 debug、info 是不工作的,必须设置为对应的数字。可以通过 -F 选项来查看某个字段的可选值:

0: emerg

1: alert

2: crit

3: err

4: warning

5: notice

6: info

7: debug




对同一个字段应用多个 match 条件的情况,比如:


journalctl _SYSTEMD_UNIT=sshd.service _SYSTEMD_UNIT=httpd.service
    此时 ,两个服务的日志都会输出过来




多个 match 条件的或操作

使用 "+" 号可以对多个匹配字段执行或操作:


journalctl _SYSTEMD_UNIT=sshd.servcie + _PID=28097

    上面的命令会输出 sshd.service 的日志和进程 28097 的日志。


    systemd-journald 服务收集到的日志默认保存在 /run/log 目录中,重启系统会丢掉以前的日志信息。 我们可以通过两种方式让 systemd-journald 服务把所有的日志都保存到文件中,这样重新启动后就不会丢掉以前的日志。
把日志保存到文件中

方法一:创建目录 /var/log/journal,然后重启日志服务 systemd-journald.service。

方法二:修改配置文件 /etc/systemd/journald.conf,把 Storage=auto 改为 Storage=persistent,并取消注释,然后重启日志服务 systemd-journald.service。

方法一的详细操作

在 /var/log/ 下面创建名为 journal 的目录,并设置权限即可:


mkdir /var/log/journal
chown root:systemd-journal /var/log/journal
chmod 2775 /var/log/journal
systemctl restart systemd-journald.service

    之后 /run/log 下面就没有 journal 的日志了,日志文件被保存在 /var/log/journal 目录下:







查看重启后的日志
journalctl --list-boots

可以看到,每次重启的信息都存在了


此时我们就可以通过 -b 选项来选择查看某次运行过程中的日志:


journalctl -b -1




journalctl -b 9eaabbc25fe343999ef1024e6a16fb58
下面的命令都会输出最后一次启动后的日志信息:


journalctl -b
journalctl -b 0

查看指定时间段的日志
利用 --since 与 --until 选项设定时间段,二者分别负责指定给定时间之前与之后的日志记录。时间值可以使用多种格式,比如下面的格式:

YYYY-MM-DD HH:MM:SS
如果我们要查询 2018 年 3 月 26 日下午 8:20 之后的日志:


journalctl --since "2018-03-26 20:20:00"
如果以上格式中的某些组成部分未进行填写,系统会直接进行默认填充。例如,如果日期部分未填写,则会直接显示当前日期。如果时间部分未填写,则缺省使用 "00:00:00"(午夜)。秒字段亦可留空,默认值为 "00",比如下面的命令:


journalctl --since "2018-03-26" --until "2018-03-26 03:00"

另外,journalctl 还能够理解部分相对值及命名简写。例如,大家可以使用 "yesterday"、"today"、"tomorrow" 或者 "now" 等。

比如获取昨天的日志数据可以使用下面的命令:


journalctl --since yesterday

要获得早上 9:00 到一小时前这段时间内的日志,可以使用下面的命令:


journalctl --since 09:00 --until "1 hour ago"

同时应用 match 和时间过滤条件

实际的使用中更常见的用例是同时应用 match 和时间条件,比如要过滤出某个时间段中sshd服务的日志记录:


journalctl _SYSTEMD_UNIT=sshd.service --since "2018-07-28" --until "2018-7-29 01:00"

按 unit 过滤日志

systemd 把几乎所有的任务都抽象成了 unit,因此我们可以方便的使用 -u 选项通过 unit 的名称来过滤器日志记录。查看某个 unit 的日志:

journalctl -u ssd.servicejournalctl -u nginx.service --since today

还可以使用多个 -u 选项同时获得多个 unit 的日志:


journalctl -u nginx.service -u php-fpm.service --since today







运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-673629-1-1.html 上篇帖子: Linux基本操作入门 下篇帖子: Linux基本介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表