Systemd 是否读取 /etc/pm/.....?

Systemd 是否读取 /etc/pm/.....?

系统是否使用systemd读取和执行脚本/etc/pm/sleep.d/

我开始得出结论,答案是systemd忽略这些脚本。如果这是真的,那么替代方案是什么?

更新:man systemd-sleep状态脚本可以添加到/lib/systemd/system-sleep/。细节对我来说不够,但我尝试修改Arch wiki 示例并创建了/lib/systemd/system-sleep/root-resume.service

[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=simple
ExecStart=/bin/systemctl restart network-manager.service

[Install]
WantedBy=suspend.target

我的目的是在恢复后重新启动网络管理器,因为它偶尔不工作。

这似乎不是我想要的。

答案1

在 systemd 下,脚本/etc/pm/config.d|power.d|sleep.d会被忽略。必须创建并启用 systemd“单元”(服务)。

为了在系统从睡眠状态恢复后重新启动网络,我创建了该文件/lib/systemd/system/root-resume.service

[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart network-manager.service

[Install]
WantedBy=suspend.target

然后我用 激活了该服务sudo systemctl enable root-resume.service。启用该服务会为文件创建一个符号链接/etc/systemd/system/suspend.target.wants/

man systemd-sleep与放置的服务文件相反/lib/systemd/system-sleep/,它们会被忽略。

答案2

不,也不是 中的那些/usr/lib/pm-utils/sleep.d。但它会在/lib/systemd/system-sleep/设置可执行位的情况下运行 中的所有脚本(不是服务文件)。

下面是调用 pm-powersave 的一个例子,修改自/usr/lib/pm-utils/sleep.d/00powersave

#!/bin/sh

# do not run pm-powersave on ARM during suspend; the 1.5 seconds that it takes
# to run it don't nearly compensate the potentially slightly slower suspend
# operation in low power mode
ARCH=`uname -m`

case $1 in
    pre)  [ "$ARCH" != "${ARCH#arm}" ] || pm-powersave false ;;          
    post) pm-powersave ;;
esac
exit 0

$1 在恢复时为“post”,否则为“pre”。两种情况下的 $2 都包含“suspend”、“hibernate”或“hybrid-sleep”。

相关内容