我需要将正在运行的命令的输出重定向到带有时间戳的日志文件(因此是一个函数而不是日志文件本身),但是错误和输出都不应该显示在控制台中。以下 -
command | my_func 2> /dev/null
不管用。
就像是
command 2> logfile
有效,但我无法在第二种情况下记录时间戳。我应该怎么办?
我需要将正在运行的命令的输出重定向到带有时间戳的日志文件(因此是一个函数而不是日志文件本身),但是错误和输出都不应该显示在控制台中。以下 -
command | my_func 2> /dev/null
不管用。
就像是
command 2> logfile
有效,但我无法在第二种情况下记录时间戳。我应该怎么办?
看来你想要:
它将 stderr 重定向
command
到/dev/null
,但将 stdout 管道传输到my_func
. (旁注:您可能需要查看commandts
)。你甚至不需要一个函数!
要将错误重定向到
/dev/null
并输出到带有时间和日期的文件,您可以sed
像这样使用:sed -e "s/^/$(date) /"
将以这种格式将当前日期附加Thu 09 Apr 2020 07:06:14 AM +03
到每一行的开头,并在日期和输出之间添加一个空格以提高可读性。注意:
1586406740
。更改$(date)
为$(date +%s)
祝你好运
如果只需要时间戳,请
ts
从moreutils
包中查看。另一种选择是使用 GNU awk:
如果您还想记录标准错误(假设是 bash shell):