cron 作业启动,但命令在“\”后被截断

cron 作业启动,但命令在“\”后被截断

我有一台 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 和命令行中工作

顺便说一句:命令行上的 \% 与 % 相同,这就是为什么你的命令在命令行上的两个版本中都可以运行

相关内容