使用 echo 添加日期而不计算

使用 echo 添加日期而不计算

我应该将该行添加到我的 ESXi 上的 /var/spool/cron/crontabs/root /bin/echo "0 3 * * 6 /ghettoVCB-master/ghettoVCB.sh -g /ghettoVCB-master/text.conf -f /ghettoVCB-master/text.list > /var/log/ghettoVCB-month-$(date +%m)-week-$((($(date +\%d)-1)/7+1)).log" >> /var/spool/cron/crontabs/root:。

$(date +%m)但是此命令行添加了和的结果$((($(date +\%d)-1)/7+1))

如何将此行添加为公式?提前致谢。

答案1

这里有一些需要改进的地方:

  • cron不会注意到直接对 中的文件所做的更改/var/spool/cron。请改用crontab -e
    还有/etc/crontab,对于此类系统范围的维护任务,它可能更适合。(
    中的 crontab是唯一可以直接编辑的。它们的格式也与通过命令公开的格式不同。)/etc/etc/cron.*crontab

  • %是 crontabs 中的特殊字符。在参数中使用它时,请使用反斜杠将其转义,例如date +\%m

  • date应该将格式字符串理解%W为“一年中的周数,以星期一为第一天(00..53)” - 无需自己计算。

  • 您的 cron 可能无法在支持进程替换 ( ) 的 shell 中运行 crontab 命令$()。您可以在类似的 shell 中明确运行命令sh -c 'echo $(date) > /tmp/foo'以确保万无一失。

相关内容