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