在哪里放置计算机恢复时运行的脚本?

在哪里放置计算机恢复时运行的脚本?

当我的计算机从内存挂起唤醒时,我需要锁定屏幕,

所以我尝试将以下脚本放入/usr/lib/pm-utils/sleep.dand /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)。

相关内容