我知道这个问题已经被问过无数次了,但我正在寻找一个使用 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/