替代答案使用systemd

替代答案使用systemd

我想运行一个 cron 作业来为 Ubuntu 桌面 20.04 上的临时用户擦除文件。由于系统不会定期完全关闭(我可以使用@reboot /path/to/my_script.sh),有没有办法安排一个 cron 作业在计算机挂起时运行?我在 Google 上看到的所有内容都与在计算机挂起时运行 cron 作业有关,但我想使用挂起或唤醒作为此 cron 作业的触发器。

答案1

这种触发器不是 cron 的设计初衷。Cron 是基于时钟的触发器。@reboot 是添加到 cron 的一个便利功能。

对于暂停/删除作业,一种解决方案是使用电源管理。

  • man pm-suspend
  • 将您的工作放在 /etc/pm/sleep.d/ 目录中。
  • 这不是一个 cron 任务。您将完整的脚本放在目录中。

用于case确定睡眠时发生的情况以及恢复时发生的情况:

case "${1}" in
   suspend)
      suspend_actions
      ;;
   resume)
      resume_actions
      ;;
esac

另一个类似的解决方案是使用systemd

  • 主要区别是使用 /lib/systemd/system-sleep/ 而不是 /etc/pm/sleep.d/

这两种方法都可以被认为有点不合时宜:不要将它们用于实际应用程序,也不要用于长时间暂停。使用抑制反而。

答案2

替代答案使用systemd

/lib/systemd/system-sleep/my_script.sh创建一个包含以下内容的文件:

#!/bin/bash
case $1/$2 in
    pre/*)
    # commands to be executed before suspend, hibernate, etc. goes below
    echo "This example does nothing"
    ;;
    post/*)
    # commands to be executed on wake, resume, etc. goes below
    echo "Nothing to see here"
    ;;
esac

编辑并添加您需要添加的命令,以代替以echo上面开头的行。保存文件并使其可执行。请参阅如何使文件(例如 .sh 脚本)可执行,以便可以从终端运行了解更多信息。

希望这可以帮助

相关内容