向终端和文件日志发送echo和error

时间:2017-05-30 21:32:16

标签: bash shell unix logging terminal

我正在尝试修改在shell中为unix创建的脚本。此脚本主要用于在没有人工交互的支持服务器上运行,但是我需要创建另一个脚本以允许用户输入信息。因此,它只是修改旧版本的用户输入。但我遇到的最大问题是试图将错误日志和回声保存在日志文件中。该脚本有很多,但我希望在终端上显示这些内容并将它们发送到指定的日志文件,以便稍后查看。

我拥有的是:

exec 1> ${LOG} 2>&1

此行几乎将所有内容发送到日志文件。这一切都很好,但我也有人试图在脚本中输入信息,并且它将所有内容发送到日志文件,包括提示所需的回显。这一行也在脚本的开头,但是更多地阅读stderr和stdout消息。我试过了:

exec 2>&1 1>>${LOG}
exec 1 | tee ${LOG} But only getting error when running it this "./bash_pam.sh: line 39: exec: 1: not found"

我已经通过网站such as this来解决问题,但我不明白为什么它不打印到两者。我插入它的方式,它只是将它发送到日志位置而不是发送到终端,或者它将它发送到终端,但日志中没有任何内容。

编辑:有些解决方案,为此已经提到某些修复将在bash中起作用,但在/ bin / sh中不起作用。

1 个答案:

答案 0 :(得分:0)

如果您希望将所有输​​出打印到控制台上,同时打印到logfile.txt,您将在脚本上运行此命令:

bash your_script.sh 2>&1 | tee -a logfile.txt

或在文件中调用它:

<bash_command> 2>&1 | tee -a logfile.txt

要附加到logfile.txt而不是覆盖,请将-a选项添加到tee