当我的计算机从内存挂起唤醒时,我需要锁定屏幕,
所以我尝试将以下脚本放入/usr/lib/pm-utils/sleep.d
and /etc/pm/sleep.d
,但它从未被执行,
#!/bin/sh
case "$1" in
hibernate|suspend)
;;
thaw|resume)
vlock -ans
;;
*) exit $NA
;;
esac
PS这pm-suspend
不是pm-hibernate
。
编辑
也尝试了 systemd 服务,但没有成功:
# /etc/systemd/system/[email protected]
[Unit]
Description=User resume actions
After=suspend.target
[Service]
User=root
Type=simple
ExecStart=vlock -ans
[Install]
WantedBy=suspend.target
我也打电话了,vlock还没叫。systemctl enable [email protected]
答案1
AFAIKExecStart
想要可执行文件的完整路径。
尝试ExecStart=/usr/bin/vlock -ans
在你的/etc/systemd/system/[email protected]
答案2
您是否将权限和所有者设置为维基百科上有描述吗?
确保该脚本可执行(chmod 755)并且由 root:root 所有
答案3
您正在尝试创建自己的钩子,对吧?我正在阅读关于 pm-utils 的 Arch Linux 文档(下面的链接),我会首先检查这些内容:
- 脚本名称(以两位数字开头,遵循文档中的方案)
- 脚本位置:/etc/pm/sleep.d 是正确的位置
- 脚本模式: chmod +x /etc/pm/sleep.d/66scriptname
如果您确定所有这些都正确,那么请考虑脚本本身。
这是我正在阅读的有关此内容的文档的链接: https://wiki.archlinux.org/index.php/pm-utils#Creating_your_own_hooks
你的剧本和他们在那里展示的不太一样。您调用 /bin/sh 而不是 /bin/bash。你在 1 美元左右使用双引号,但他们没有。你结合了选项,但他们没有。所有这些应该没事吧?除了 sh 与 bash 之外。
放一些怎么样记录器或 echo 语句进行调试,然后检查日志以查看脚本是否正在启动。如果是的话,进展到什么程度了?
答案4
我通过执行 a 找到了所有目录"sudo strace pm-hibernate 2>/root/myfile.log"
,或者您可以将 pm-hibernate 替换为 pm-suspend。一段时间后机器将断电。然后,当您再次启动/恢复时,读取 myfile.log,其中包含访问/写入的所有脚本、配置、日志文件。
对于我的 Fedora 20,它们是:
/usr/lib64/pm-utils/pm-functions
/usr/lib64/pm-utils/defaults
/usr/lib64/pm-utils/module.d
/etc/pm/config.d
/etc/pm/pm-suspend.config.d
/var/run/pm-utils/locks/pm-suspsnd.lock
/var/run/pm-utils/pm-suspend/storage/parameters
等以及其他几个目录。
帮助您自己使用特定版本的特定发行版(顺便说一句,Fedora 20 使用 systemd)。