Spm*_*pmP 53
在 15.04, Vivid 中,您需要将脚本放置在:
/lib/systemd/system-sleep/
Run Code Online (Sandbox Code Playgroud)
基于 Arch wiki ( systemd sleep Hooks )的示例脚本:
#!/bin/sh
case $1/$2 in
pre/*)
echo "Going to $2..."
# Place your pre suspend commands here, or `exit 0` if no pre suspend action required
;;
post/*)
echo "Waking up from $2..."
# Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
;;
esac
Run Code Online (Sandbox Code Playgroud)
不要忘记使您的脚本可执行!
sudo chmod a+x /lib/systemd/system-sleep/your-script
Run Code Online (Sandbox Code Playgroud)
有关man systemd-sleep更多详细信息,请参阅。
没有必要,sudo因为您的脚本将以 root 身份运行。
注意:关于该主题的 Arch wiki 链接(systemd sleep hooks)指出(对于 15.04 错误)您应该将脚本放在 中/usr/lib/systemd/system-sleep/,但这在 Ubuntu 15.04 中不起作用。/lib/systemd/system-sleep/如果您运行的是 15.04,请将脚本放入。
mfi*_*sch 39
pm-utils 提供了一堆在睡眠/恢复时运行的脚本,你可以在那里添加你的脚本,但你需要小心,因为搞砸了可能会破坏恢复。看看/usr/lib/pm-utils/sleep.d,这就是脚本所在的位置,您可以查看被调用的脚本,95led因为它非常简单,并且是一个很好的开始模型。
95led 提供了休眠/挂起和解冻/恢复的情况,如果你只想要恢复,你可以这样写你的脚本:
#!/bin/sh
case "$1" in
resume)
echo "hey I just got resumed!"
run_some_command
esac
Run Code Online (Sandbox Code Playgroud)
您的脚本可能应该最后运行,因此请确保它显示在目录的最后,也许将其命名为 99ZZZ_myscript 或其他名称。再说一次,如果你不确定你在这里做什么,我不会惹它。您最终可能会中断暂停/恢复。如果发生这种情况,您可以删除脚本或修复它,但您必须执行硬重启才能使系统恢复原状。
可能还有更简单的方法,但我知道这种方法会奏效。
san*_*rys 12
由于我没有足够的声誉来写评论,我将重写 mfisch 的解决方案,添加 Lindh-E 的答案:
解决方案 :
pm-utils提供了一堆在睡眠/恢复时运行的脚本。
你需要的是:
警告 :
你需要小心,因为搞砸了可能会破坏简历。如果系统崩溃或死机,您可以删除脚本或修复它,但您必须执行硬重启才能使系统恢复原状。
例子 :
查看 /usr/lib/pm-utils/sleep.d 中的现有脚本。名为 95led 的脚本非常简单,是一个很好的模型。95led 提供了休眠/挂起和解冻/恢复的情况,如果你只想要恢复,你可以这样写你的脚本:
#!/bin/sh
case "$1" in
resume)
echo "hey I just got resumed!"
run_some_command
esac
Run Code Online (Sandbox Code Playgroud)
这并不是一个单独的独立答案,但由于我无法发表评论(由于声誉限制),我只想为 mfisch 的答案添加一个重要的补充,这也对我有用。
请注意HOME和PATH(很可能还有其他环境变量)可能与您的常规 shell 环境不同。我遇到了 mfisch 的解决方案似乎不适用于我需要在恢复时执行的脚本的问题,但结果是我的脚本有问题,因为它们希望HOME被设置为我的用户目录(我是我的单个用户) system) 并PATH包含/usr/local/bin,并且在恢复时,这两者都不能保证(并且在 的情况下HOME,可能是不可取的)。所以你可能需要调整你的脚本/程序来不依赖于那些 env-vars ......