rtcwake cron 不起作用

rtcwake cron 不起作用

我打算每天晚上让电脑进入睡眠状态,第二天早上再唤醒它。我发现 rtcwake 可以满足我的目的。但是把它放在 crontab 中没有任何作用。以下是我的“root”用户的 crontab 条目

0 1 * * * rtcwake -m disk -s 25200

我使用“sudo crontab -e”添加了它。系统日志显示它执行了该命令,但计算机没有进入睡眠状态。如果我直接在终端上运行该命令,计算机会立即进入睡眠状态,正如预期的那样。所以我认为 ACPI 没有任何问题。

有人知道吗?我使用的是 Ubuntu 14.04

答案1

我知道这已经晚了两年,但我遇到了同样的问题,并想向将来可能遇到此问题的任何人提供我的解决方案。

为了每天 06:00 唤醒我的机器,我使用 设置了一个 cronjob rtcwake。但我的问题是,即使 cronjob 运行了,它也没有设置闹钟。我确实使用 编辑了 root 用户crontabsudo crontab -e

解决方案是在 crontab 中使用 的完整路径rtcwake,而不仅仅是命令。为此,首先使用which rtcwake将返回命令的完整路径(在我的情况下是/usr/sbin/rtcwake)并在 cronjob 中使用它。

我的 cronjob 现在看起来像这样: 0 12 * * * /usr/sbin/rtcwake -m no -t $(date +\%s -d 'tomorrow 0600')

 

附注:如果您date像我一样使用,则必须转义百分号。

答案2

好的,我想我已经找到解决方案了。在 rtcwake 之前添加 sudo 可以解决问题。

但是我现在有以下疑问:为什么 root 的 crontab 需要 sudo 才能运行命令。它不是已经在 root 下运行了吗?

答案3

我对此做了一些调查,如果您在没有 sudo 的情况下在表内使用 rtcwake 执行“sudo crontab -e”,您将收到错误消息:

/home/leo/autojob: line 4: rtcwake: command not found

似乎虽然“sudo crontab -e”是在 root 帐户下执行的,但它找不到正确的命令路径。还有一些其他帖子说你应该在 crontab 前面加上 PATH 等等。只要你在 rtcwake 命令前面加上 sudo,它似乎就能再次找到该命令。

# m h  dom mon dow   command
40 14 * * * sudo /home/leo/autojob >> /home/leo/cron_log 2>&1

sudo crontab 中的上述配置现在可以工作了,“autojob”是包含 rtcwake 的脚本。

相关内容