systemd-notify 中文手册

译者:金步国


版权声明

本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。

其他作品

本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:

联系方式

由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。


手册索引 . 指令索引systemd-231

名称

systemd-notify — 向 systemd 报告服务状态的变化

大纲

systemd-notify [OPTIONS...] [VARIABLE=VALUE...]

描述

systemd-notify 可用于 在守护进程脚本中向 systemd 报告进程状态的变化。 可用于发送任意信息, 其中最重要的是 报告"启动已完成"的消息。

此工具基本上就是对 sd_notify() 的简单包装, 以便于在脚本中使用。详见 sd_notify(3) 手册。

注意,在报告状态更新的同时, 还可以传递一系列环境变量。

注意, 除非在调用此命令的服务单元中设置了 NotifyAccess=all , 否则 systemd 将会拒绝接受状态更新的消息。

选项

能够识别的命令行选项如下:

--ready

向 systemd 报告"启动已完成"的消息。 这等价于 systemd-notify READY=1 。 详见 sd_notify(3) 手册。

--pid=

向 systemd 报告主守护进程的 PID 。 如果 PID 参数被省略, 将使用调用 systemd-notify 的进程的 PID 。 这等价于 systemd-notify MAINPID=$PID 。 详见 sd_notify(3) 手册。

--status=

向 systemd 发送一个任意内容的字符串消息。 这等价于 systemd-notify STATUS=... 。 详见 sd_notify(3) 手册。

--booted

用于检查系统的 init 进程是否为 systemd , 返回 0 表示系统的 init 进程是 systemd ,返回非零表示其他。 此选项并不发送任何消息,因此与其他选项没有任何关系。 详见 sd_booted(3) 手册。 另一种检查方法是 systemctl(1)is-system-running 命令。 若返回 "offline" 则表示系统的 init 进程不是 systemd

-h, --help

显示简短的帮助信息并退出。

--version

显示简短的版本信息并退出。

退出状态

返回值为 0 表示成功, 非零返回值表示失败代码。

例子

例 1. 启动通知与状态更新

一个简单的守护进程脚本,在创建好通信管道之后, 向 systemd 报告"启动已完成"的消息。在运行时, 向 systemd 报告更多的状态消息:

#!/bin/bash

mkfifo /tmp/waldo
systemd-notify --ready --status="Waiting for data..."

while : ; do
        read a < /tmp/waldo
        systemd-notify --status="Processing $a"

        # Do something with $a ...

        systemd-notify --status="Waiting for data..."
done

参见

systemd(1), systemctl(1), systemd.unit(5), sd_notify(3), sd_booted(3)