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


14

系统是否使用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

我的意图是在恢复后重新启动网络管理器,因为有时它不起作用。

这似乎不符合我的要求。


我发现,如果您sudo pm-suspend从cmdline 键入,则/etc/pm/sleep.d脚本仍将运行。只是systemd不会在其工作流程中使用它。
Tomofumi

Answers:


13

in /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/将忽略该文件。


是的,这正是“挂起后重启网络”脚本不适用于使用systemd运行ubuntu的用户的原因。
neo1691

这应该创建为/etc/systemd/system/root-resume.service。您永远不要修改/ lib下的文件,因为它们是由程序包管理器管理的,以避免崩溃和潜在的升级中断,更不用说简化备份了。
hackel

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都包含“挂起”,“休眠”或“混合睡眠”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.