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


8

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

因此,我尝试将以下脚本放入/usr/lib/pm-utils/sleep.d/etc/pm/sleep.d,但从未执行过,

#!/bin/sh

case "$1" in
    hibernate|suspend)
        ;;
    thaw|resume)
        vlock -ans
        ;;
    *) exit $NA
        ;;
esac

PS pm-suspend不是pm-hibernate

编辑

也尝试过系统化的服务,没有运气:

# /etc/systemd/system/resume@.service
[Unit]
Description=User resume actions
After=suspend.target

[Service]
User=root
Type=simple
ExecStart=vlock -ans

[Install]
WantedBy=suspend.target

systemctl enable resume@.service也打过电话,vlock还没打过去。


3
您确定它不会执行吗?您能尝试记录它还是执行类似操作echo executed script >> /tmp/resume
Ulrich Dangel 2012年

Answers:


2

AFAIK ExecStart想要可执行文件的完整路径。

尝试ExecStart=/usr/bin/vlock -ans/etc/systemd/system/resume@.service



1

您正在尝试创建自己的钩子,对吗?我正在阅读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的double-qoutes,但不使用。您组合选项而它们却没有。所有这些都应该没事吧?除了sh vs bash。

如何在其中放置一些记录器或echo语句以进行调试,然后检查日志以查看脚本是否开始。如果是的话,它能走多远。


systemd是否可以与pm-utils配合使用?我不太确定;-)
雏菊

0

我通过执行找出了所有目录"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 btw)。

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.