我有一台 Ubuntu 16.04 服务器,我想让它每天晚上和早上自动进入睡眠状态和唤醒状态。
我已将以下命令添加到 cron 作业中,该作业每天午夜前 5 分钟触发:
/usr/sbin/rtcwake -m mem -l -t $(date +\%s -d 'tomorrow 07:20')
(我这样做是因为我想让这项工作更容易理解——使用秒——虽然有效——但并不容易理解。)
cron
它“运行”但失败了。Syslog 报告尝试运行的命令:
/usr/sbin/rtcwake -m mem -l -t $(date +\
换句话说cron
似乎正在截断这部分:
%s -d 'tomorrow 07:20')
我应该提到,当我在终端窗口中执行完整命令时,它会立即使计算机进入睡眠状态(并且第二天早上也会正常唤醒)。它仅在作为作业运行时才会出现问题cron
。
答案1
使用 wemin 输入 cron 命令
webmin 处理 cron 命令中的特殊字符,您可以在命令行中输入它们,而不需要像直接编辑 crontab 时那样对它们进行转义。
在这种情况下,cron 特殊字符 % 会自动屏蔽为 \%。您在 webmin 中输入的 \% 随后会被屏蔽为 \\%。
/usr/sbin/rtcwake -m mem -l -t $(date +%s -d'明天 07:20')
应该在 webmin 和命令行中工作
顺便说一句:命令行上的 \% 与 % 相同,这就是为什么你的命令在命令行上的两个版本中都可以运行