<systemd问题定位手段>

诊断开机问题:

  1. 串口控制台:启动阶段按‘e’,编辑linux启动命令行,添加以下内容,可让systemd记录大量有效的调试信息
    systemd.log_level=debug systemd.log_target=console console=ttyS0,38400
  2. 进入救援模式或紧急模式
    systemd.unit=rescue.target 或 1添加到内核命令行。若无法进入,尝试下面步骤:
    systemd.unit=emergency.target 或 emergency 添加到内核命令行。在此模式下,需要重新以可读写的方式挂载根文件系统在你编辑任何文件前:
    mount -o remount,rw /
    如果紧急模式也无法进入,直接在内核命令行添加 init=/bin/sh来进入shell,这一般适用于systemd本身或其依赖的一些库被损坏,或许需要重新安装受影响的包。
  3. 在内核命令行添加以下:
    systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M printk.devkmsg=on
    使用journalctl -b 查看日志
    使用systemctl list-jobs命令查看当前服务进行问题排查

诊断关机问题:

  1. 使用reboot -f 或 poweroff -f命令看内核是否会重启,若都不奏效,说明是内核bug,不是systemd的bug
  2. 如果reboot或者poweroff奏效,但是时间过长,十分可以,可以采取以下措施:
    在grub中内核参数中添加以下调试项:
    systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M printk.devkmsg=on enforcing=0
    注意,也可以在开机的时候按e键编辑
    然后执行命令:grub2-mkconfig -o /boot/grub2/grub.cfg,生成新的grub配置。(对于uefi系统上的指令是grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg)
    编辑以下内容到/usr/lib/systemd/system-shutdown/debug.sh
    #!/bin/sh
    mount -o remount,rw /
    dmesg > /shutdown-log.txt
    mount -o remount,ro /
    赋予执行权限chmod a+x /usr/lib/systemd/system-shutdown/debug.sh
    reboot
    查看/shutdown-log.txt,进行问题排查

关键信息:

  1. 内核命令行信息,从bootloader的配置文件(/boot/grub2/grub.cfg)查看或从/proc/cmdline查看
  2. 日志信息
    journalctl -b > journal.txt的输出,最好在开机前在grub内核命令行中添加了systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M printk.devkmsg=on
  3. systemd-analyze dump > systemd-dump.txt,记录各种服务状态的信息
  4. /usr/bin/systemd --test --system --log-level=debug > systemd-test.txt 2>&1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值