![向日志文件添加时间戳?](https://linux22.com/image/6774/%E5%90%91%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E6%B7%BB%E5%8A%A0%E6%97%B6%E9%97%B4%E6%88%B3%EF%BC%9F.png)
我正在运行一个脚本文件。我在脚本中编写了一个 while 循环,在其中管道化了多个命令,例如awk
,sed
最后我使用运算符将输出写入文件>
。我试图在文件的起始行添加时间戳(我没有附加文件)。
每次运行脚本时,它都应该将时间戳写入文件中,如下所示:
时间戳
文件数据
答案1
我说创建第二个脚本,如下所示:
#!/bin/bash
echo -e "$(date)\n" # of course format date to your needs
cat <&0
exit $?
这将像这样工作:(... all your commands & pipes...) | new_script >output.file
解释:
首先回显日期和换行符,然后连接 STDIN,最后使用最后一个(猫的)退出代码退出。
答案2
最简单的方法可能是简单地将时间通过日期写入文件,然后将数据附加到文件中,如下所示:
date > file
your_code >> file
查看日期的联机帮助页,找到适合您的用例的正确格式
答案3
在您的行之后或之前添加此内容`date "+%Y-%m-%d"`
,例如 2016-04-26
在你的代码中printf "this is the output\t`date "+%Y-%m-%d"`"
将读作:
这是输出 2016-04-26
echo
你也可以使用这个
你可以做其他类似的事情:
`date "+%b%d"`
例如 4 月 26 日
对于其他格式检查man date
附加信息:
`(反引号):命令替换
` 字符(位于带 ~ 的键上)在 shell 命令中使用时非常重要。这个 ` 表示无论在哪里使用它都需要命令替换。因此,每当使用 ` 时,这些反引号标记包含的命令的任何部分都将被执行(就好像它是唯一的命令一样),然后该命令的结果将被替换为您键入的原始 shell 命令。下面解释得很清楚
来源:http://www.codecoffee.com/tipsforlinux/articles/26-2.html
答案4
“记录器”
您可能还想看看logger
,这是一个有点被忽视的命令,用于以系统的标准日志输出格式将消息写入系统日志(或日志)。如果您的应用程序维护自己的日志文件,这对您没有帮助,但根据具体情况,使用标准系统日志记录工具可能有良好的设计原理。只是为了以防万一,因为logger
为您添加了时间戳。