【问题标题】:VMStat ran everyday at midnight with the time before each entryVMStat 每天午夜运行,每次输入前的时间
【发布时间】:2019-05-12 15:26:00
【问题描述】:

尝试每 10 分钟运行一次 VMSTAT(每天每 600 秒 144 次),但希望在每行的开头附加时间。

 0 00 * * * /usr/bin/vmstat 600 144|awk '{now=strftime("%T"); print now $0}' > /home/rory/rory_vmstat`date +\%d`

我的邮件中不断收到一条消息:

/bin/sh: -c: line 0: 寻找匹配的'''时出现意外的EOF

/bin/sh: -c: line 1: 语法错误:文件意外结束

这在命令行中有效:/usr/bin/vmstat 600 144|awk '{now=strftime("%T");现在打印 $0}' 所以我不确定出了什么问题。

我确定它没有太复杂,我尝试切换 ' 和 " 但没有运气。任何帮助将不胜感激:)

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。

标签: linux shell cron sh


【解决方案1】:

您已经在 date +\%d 处转义了最后一个 % 字符,您可能也需要对第一个字符做同样的事情:

strftime("\%T")

问题在于 cron 将 % 转换为换行符并将 % 之后的文本发送到命令的标准输入,除非该 % 被转义。

【讨论】:

  • 谢谢,这解决了邮件问题并创建了文件,但它似乎是空的,有什么想法吗?再次感谢!
  • 最终会的。你让它运行 24 小时,每 10 秒输出一行。文件为空 atm 的事实很可能正在缓冲;)
  • 谢谢!我会一直拖到明天早上(我将 crontab 更改为在下午 6 点运行,所以它肯定会有欠条)
  • @ROShea - 不客气。请在回复中标记我,否则我不会知道;)
  • @tink 新手哈哈,它工作但缓冲问题并不理想,所以我添加了 stdbuf 以便我可以将信息实时附加到文件中。感谢您的帮助 :) 最终命令是 0 00 * * * vmstat 600 144|stdbuf -oL awk '{now=strftime("\%T"); print now $0}' > /home/rory/new_buffered_rory_vmstatdate +\%d`
猜你喜欢
  • 2015-09-17
  • 2012-08-09
  • 2014-12-06
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
相关资源
最近更新 更多