linux - 如何向 crond 的 native 日志添加时间戳?

标签 linux bash cron

我知道这个问题已经被问过无数次了,但我正在寻找一个使用 crond 的 native 日志功能的解决方案。我不想通过管道传输每个 cron 的输出并在前面添加时间戳。

我像这样启动 crond:

crond -L /var/log/cron.log -f

日志是这样的:

crond: crond (busybox 1.30.1) started, log level 8
crond: USER root pid  16 cmd echo "hello"
crond: USER root pid  18 cmd echo "hello"
crond: USER root pid  19 cmd echo "hello"

我想在行前添加时间戳。我不想向每个单独的 cron 添加一些标准输出命令并在前面添加日期。

也许我可以观看该文件并附加到每个新行或其他内容?如何访问 crond 的流并对其进行修改?

最佳答案

我相信答案是不可能修改 crond 输出文件。

cron 的实际实现细节并不容易控制单个作业的日志文件。此外,crond 以 root 身份运行,这将使用户作业很难更改文件。在 crond 运行时尝试更改文件可能会导致问题。

考虑以下选项

  • 编写一个进程,tail -f 日志文件,并创建一个新的日志文件,每行都以时间戳为前缀。
  • 在启动时运行该进程。
tail -f /var/log/cron.log | while read x ; do echo "$(date) $x" ; done >> /var/log/cron-ts.log

或者配置为您需要的任何格式。

关于linux - 如何向 crond 的 native 日志添加时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59117995/

相关文章:

Java从windows机器远程访问linux机器

windows - 从Git Bash(MINGW64)运行MSVC 'cl.exe'

javascript - 评估 html 正文中的 javascript 文本

javascript - 使用 javascript 在 Rails 中自动返回 API 请求值

javascript - 如何设置node.js cron 作业来制作一些东西?

linux - 当文件名包含 linux 文件夹中的特定字符时,如何删除文件

c++ - 使用 stat 检测文件是否存在(慢?)

linux - netstat 中的奇怪百分号 (192.168.8.16%31621 :5555)

linux - Crontab 不工作

c++ - .net - Linux 时区互操作性