Crontab line escape % 在输出中生成 \

Crontab line escape % makes \ in the output

OS 太阳系.

我正在尝试通过 uptime 命令记录系统信息。 为此,我在 crontab 中安排了一个每小时运行一次的作业。 uptime 带有时间输出但没有 datetime,所以我将 date 命令与 uptime 结合起来。

我想要日期时间格式 yyyymmddHHMM 为此,我将日期输出格式化为格式 (date +"%Y%m%d%H%M")。

如果它不在 crontab 上,它工作得很好。 对于 crontab % 导致错误,所以我需要使用 **** 转义 % 以使其工作。 所以这是我的 cron 工作行:

0 * * * * bash -c "date +'\%Y\%m\%d\%H\%M' | tr '\n' ' ' && uptime" >> /tmp/uptime.log

所以我希望结果是这样的:

201703161309 1:09pm up 52 day(s), 14:45, 2 users, load average: 0.99, 1.41, 1.45

但我得到的是:

17 1:09pm up 52 day(s), 14:45, 2 users, load average: 0.99, 1.41, 1.45

那么如何让它正常工作呢

提前致谢。

由于您正在使用 bash,因此还有另一种方法可以避免 %$'5'。这看起来很奇怪,但它应该可以工作(我没有 solaris 来测试它)

0 * * * * bash -c "date +$'5'Y$'5'm$'5'd$'5'H$'5'M | tr '\n' ' ' && uptime" >> /tmp/uptime.log