我想运行一个 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 脚本)可执行,以便可以从终端运行了解更多信息。
希望这可以帮助