如何设置从睡眠状态唤醒的cronjob? [已关闭]

问题描述 投票:0回答:1

例如,如果您希望每次重新启动后都运行 cron 作业,则可以在 cron 文件中添加如下内容:

@reboot ./do_sth

有没有类似从睡眠状态唤醒的东西?

linux cron power-management crontrigger
1个回答
15
投票

这不是可以由 cron 管理的东西,但可以由电源管理实用程序 (

pm-utils
) 管理。当阅读
man pm-action
时,你会发现:

/etc/pm/sleep.d, /usr/lib/pm-utils/sleep.d
: 这些目录中的程序(称为钩子)在挂起和休眠之前以 C 排序顺序组合并执行,并使用参数
suspend
hibernate
作为参数。然后,分别使用参数
resume
thaw
以相反的顺序调用它们。如果两个目录都包含相似的命名文件,则
/etc/pm/sleep.d
中的文件将获得优先权。可以禁用钩子 通过将不可执行文件放入
/etc/pm/sleep.d
中或将其添加到
HOOK_BLACKLIST
配置变量中来分配目录。

因此您需要做的就是在

/etc/pm/sleep.d
中创建一个如下所示的脚本:

#!/usr/bin/env bash
action="$1"

case "$action" in
   suspend)
        # List programs to run before, the system suspends
        # to ram; some folks call this "sleep"
   ;;
   resume)
        # List of programs to when the systems "resumes"
        # after being suspended
   ;;
   hibernate)
        # List of programs to run before the system hibernates
        # to disk; includes power-off, looks like shutdown
   ;;
   thaw)
        # List of programs to run when the system wakes
        # up from hibernation
   ;;
esac

显然,如果您不想区分

suspend
hibernate
,或
resume
thaw
,您可以更改此设置,例如:

#!/usr/bin/env bash
action="$1"
case "$action" in
   suspend|hibernate) stuff ;;
   resume|thaw)       stuff ;;
esac
© www.soinside.com 2019 - 2024. All rights reserved.