Dom*_*Dom 1 debian boot systemd
我们如何知道 systemd 是否已完成引导系统?
如果由于缺少网络连接,系统实际上处于启动过程中,我不想在 cron 作业上执行。我的由 cron 启动的脚本会在上面进行测试,如果启动过程没有完成,它会退出
#!/bin/sh
$STATE=`HERE ADD THE MISSING PART`
if [ $STATE != "active" ]; then
exit
fi
# Actions to do on next cron after booting
Run Code Online (Sandbox Code Playgroud)
如果它也可以向我提供有关关闭过程的信息,因为问题可能是相同的..;
我使用运行级别命令使用 SystemV 执行此操作,但 Systemd 在启动结束时不会更改运行级别。
谢谢
您可以检查您需要激活的目标,以便您的脚本运行。例如,为了使网络可访问,您需要检查network-online.target
(systemctl check
如果检查的单元处于活动状态,则返回 0)
systemd 尝试达到的目标是它的“默认”目标,可以通过systemctl get-default
. 如果该目标在线,则系统已完成引导(因此您可以发出systemctl status $(systemctl get-default)
检查引导过程是否已完成)
编辑:
如果您只想监控系统的当前状态,并且您对目标不感兴趣(即您只想在一切正常运行时运行您的命令),最好使用该systemctl is-system-running
命令。它将输出running
是否一切正常,或者degraded
如果系统已启动但某些服务已失败(这可能表示错误,也可能不表示)。其他状态将表明您的脚本不应运行。作为旁注,通常最好检查返回值而不是解析文本输出,但联机帮助页没有指定返回值,只说明非零退出代码的“运行”结果以外的任何内容,因此它可能更安全解析输出文本。
有关systemctl
可能的输出值,请参阅联机帮助页。
归档时间: |
|
查看次数: |
612 次 |
最近记录: |