- systemd.index 中文手册
- systemd.directives 中文手册
- binfmt.d 中文手册
- bootctl 中文手册
- bootup 中文手册
- busctl 中文手册
- coredump.conf 中文手册
- coredumpctl 中文手册
- crypttab 中文手册
- daemon 中文手册
- dnssec-trust-anchors.d 中文手册
- environment.d 中文手册
- file-hierarchy 中文手册
- halt 中文手册
- hostname 中文手册
- hostnamectl 中文手册
- hwdb 中文手册
- journal-remote.conf 中文手册
- journal-upload.conf 中文手册
- journalctl 中文手册
- journald.conf 中文手册
- kernel-command-line 中文手册
- kernel-install 中文手册
- loader.conf 中文手册
- locale.conf 中文手册
- localectl 中文手册
- localtime 中文手册
- loginctl 中文手册
- logind.conf 中文手册
- machine-id 中文手册
- machine-info 中文手册
- machinectl 中文手册
- modules-load.d 中文手册
- networkctl 中文手册
- networkd.conf 中文手册
- nss-myhostname 中文手册
- nss-mymachines 中文手册
- nss-resolve 中文手册
- nss-systemd 中文手册
- os-release 中文手册
- pam_systemd 中文手册
- portablectl 中文手册
- resolvectl 中文手册
- resolved.conf 中文手册
- shutdown 中文手册
- sysctl.d 中文手册
- systemctl 中文手册
- systemd 中文手册
- systemd-analyze 中文手册
- systemd-ask-password 中文手册
- systemd-ask-password-console.service 中文手册
- systemd-backlight@.service 中文手册
- systemd-binfmt.service 中文手册
- systemd-bless-boot-generator 中文手册
- systemd-bless-boot.service 中文手册
- systemd-boot 中文手册
- systemd-boot-check-no-failures.service 中文手册
- systemd-cat 中文手册
- systemd-cgls 中文手册
- systemd-cgtop 中文手册
- systemd-coredump 中文手册
- systemd-cryptsetup-generator 中文手册
- systemd-cryptsetup@.service 中文手册
- systemd-debug-generator 中文手册
- systemd-delta 中文手册
- systemd-detect-virt 中文手册
- systemd-environment-d-generator 中文手册
- systemd-escape 中文手册
- systemd-firstboot 中文手册
- systemd-fsck@.service 中文手册
- systemd-fstab-generator 中文手册
- systemd-getty-generator 中文手册
- systemd-gpt-auto-generator 中文手册
- systemd-halt.service 中文手册
- systemd-hibernate-resume-generator 中文手册
- systemd-hibernate-resume@.service 中文手册
- systemd-hostnamed.service 中文手册
- systemd-hwdb 中文手册
- systemd-id128 中文手册
- systemd-importd.service 中文手册
- systemd-inhibit 中文手册
- systemd-initctl.service 中文手册
- systemd-journal-gatewayd.service 中文手册
- systemd-journal-remote.service 中文手册
- systemd-journal-upload.service 中文手册
- systemd-journald.service 中文手册
- systemd-localed.service 中文手册
- systemd-logind.service 中文手册
- systemd-machine-id-commit.service 中文手册
- systemd-machine-id-setup 中文手册
- systemd-machined.service 中文手册
- systemd-makefs@.service 中文手册
- systemd-modules-load.service 中文手册
- systemd-mount 中文手册
- systemd-networkd-wait-online.service 中文手册
- systemd-networkd.service 中文手册
- systemd-notify 中文手册
- systemd-nspawn 中文手册
- systemd-path 中文手册
- systemd-portabled.service 中文手册
- systemd-quotacheck.service 中文手册
- systemd-random-seed.service 中文手册
- systemd-rc-local-generator 中文手册
- systemd-remount-fs.service 中文手册
- systemd-resolved.service 中文手册
- systemd-rfkill.service 中文手册
- systemd-run 中文手册
- systemd-run-generator 中文手册
- systemd-sleep.conf 中文手册
- systemd-socket-activate 中文手册
- systemd-socket-proxyd 中文手册
- systemd-suspend.service 中文手册
- systemd-sysctl.service 中文手册
- systemd-system-update-generator 中文手册
- systemd-system.conf 中文手册
- systemd-sysusers 中文手册
- systemd-sysv-generator 中文手册
- systemd-time-wait-sync.service 中文手册
- systemd-timedated.service 中文手册
- systemd-timesyncd.service 中文手册
- systemd-tmpfiles 中文手册
- systemd-tty-ask-password-agent 中文手册
- systemd-udevd.service 中文手册
- systemd-update-done.service 中文手册
- systemd-update-utmp.service 中文手册
- systemd-user-sessions.service 中文手册
- systemd-vconsole-setup.service 中文手册
- systemd-veritysetup-generator 中文手册
- systemd-veritysetup@.service 中文手册
- systemd-volatile-root.service 中文手册
- systemd.automount 中文手册
- systemd.device 中文手册
- systemd.dnssd 中文手册
- systemd.environment-generator 中文手册
- systemd.exec 中文手册
- systemd.generator 中文手册
- systemd.journal-fields 中文手册
- systemd.kill 中文手册
- systemd.link 中文手册
- systemd.mount 中文手册
- systemd.netdev 中文手册
- systemd.network 中文手册
- systemd.nspawn 中文手册
- systemd.offline-updates 中文手册
- systemd.path 中文手册
- systemd.preset 中文手册
- systemd.resource-control 中文手册
- systemd.scope 中文手册
- systemd.service 中文手册
- systemd.slice 中文手册
- systemd.socket 中文手册
- systemd.special 中文手册
- systemd.swap 中文手册
- systemd.syntax 中文手册
- systemd.target 中文手册
- systemd.time 中文手册
- systemd.timer 中文手册
- systemd.unit 中文手册
- sysusers.d 中文手册
- timedatectl 中文手册
- timesyncd.conf 中文手册
- tmpfiles.d 中文手册
- udev 中文手册
- udev.conf 中文手册
- udevadm 中文手册
- user@.service 中文手册
- vconsole.conf 中文手册
systemd-notify 中文手册
名称
systemd-notify — 向 systemd 报告服务状态的变化
大纲
systemd-notify [OPTIONS...] [VARIABLE=VALUE...]
描述
systemd-notify 可用于在守护进程脚本中向 systemd 报告进程状态的变化。可用于发送任意信息,其中最重要的是报告"启动已完成"的消息。
此工具基本上就是对sd_notify()
的简单包装,以便于在脚本中使用。详见sd_notify(3) 手册。
注意,在报告状态更新的同时,还可以传递一系列环境变量。
注意,在默认情况下(也就是调用此命令的服务单元含有 NotifyAccess=none
), systemd 并不从此命令接受状态更新消息。
注意,服务单元的 sd_notify()
通知能够正常工作的前提,是必须满足如下两个条件之一:(1)在 PID=1 的进程处理通知消息时,发送该通知的进程依然在运行;(2)发送该通知的进程是 systemd 派生的子进程(也就是匹配 NotifyAccess=main
或 NotifyAccess=exec
的进程)。如果服务单元中的某个辅助进程在发送了 sd_notify()
通知之后就立即退出了,那么 systemd 将有可能来不及将该通知关联到这个服务单元上。在这种情况下,即使明确设置了 NotifyAccess=all
,该通知也可能会被忽略掉。
systemd-notify 会首先尝试以调用进程的PID来调用 sd_notify()
(此操作仅在确实拥有足够权限的情况下才会成功),如果失败,将会使用其自身的PID再次调用 sd_notify()
。这种做法对于从 shell 脚本中调用 systemd-notify 命令非常有用,特别是当服务的主进程是 shell 的时候(由于 NotifyAccess=all
的限制),因为在这种情况下,shell 进程(而不是 systemd-notify 进程)将成为消息的发送者。
选项
能够识别的命令行选项如下:
--ready
向 systemd 报告"启动已完成"的消息。这等价于 systemd-notify READY=1 。详见 sd_notify(3) 手册。
--pid=
向 systemd 报告主守护进程的 PID 。如果 PID 参数被省略,将使用调用 systemd-notify 的进程的 PID 。这等价于 systemd-notify MAINPID=$PID 。详见 sd_notify(3) 手册。
--uid=
USER
向 systemd 报告此消息来自哪个用户,也就是使用指定的
USER
取代调用此命令的用户,作为此通知消息的发送者。USER
既可以是一个UID数值也可以是一个用户名字符串。此选项需要足够的权限才能操作进程的用户标识。--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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论