Bash - 将所有输出记录到文件中,但也在日志中包含时间戳

时间:2017-08-23 15:11:44

标签: bash

使用这个简单的例子,我希望能够将所有内容记录到一个文件中,并在每个命令之前加上时间戳。我不希望时间戳显示在控制台上。

我的示例在屏幕上打印时间戳,但不会将其打印到日志中。

#!/usr/bin/env bash

exec > >(tee -i logfile.txt | ts '[%Y-%m-%d %H:%M:%S]')

exec 2>&1

echo "Sending files to S3 ..."
s3cmd MYFILE s3://MYBUCKET/
echo "Done"

2 个答案:

答案 0 :(得分:1)

ts之前需要tee,并且因为您不想更改stdout,所以嵌套的流程替换:

exec > >(tee -a >(ts '[%Y-%m-%d %H:%M:%S]' > logfile.txt))

答案 1 :(得分:1)

由于您使用的是moreutils工具,因此可以使用wrap_content命令:

pee