加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 将输出写入日志文件和控制台

发布时间:2020-12-15 16:16:06 所属栏目:安全 来源:网络整理
导读:在Unix shell中,我有一个env文件(env文件定义运行用户脚本所需的参数,如日志文件名和路径,重定向输出和错误到日志文件,数据库连接详细信息等),它重定向所有输出)和错误从执行脚本日志文件使用以下代码: exec 1${LOG_FILE}exec 2${LOG_FILE} env文件在
在Unix shell中,我有一个env文件(env文件定义运行用户脚本所需的参数,如日志文件名和路径,重定向输出和错误到日志文件,数据库连接详细信息等),它重定向所有输出)和错误从执行脚本日志文件使用以下代码:
exec 1>>${LOG_FILE}
exec 2>>${LOG_FILE}

env文件在每个脚本的开头执行。由于env文件中的上述代码,可能是用户输出或错误的所有控制台输出都直接输出到日志文件,这是我实际需要的。

但有一些选择性用户输出,我想在控制台和日志文件中显示。但是因为上面的代码我不能这样做。

我知道,如果我删除上面的代码,我可以得到所需的结果,这种情况下,但我必须手动写入所有其他输出到日志文件,这不是一个容易的任务。

有没有办法在控制台和日志文件中获取输出,而不删除上述代码?

exec 3>&1 1>>${LOG_FILE} 2>&1

会将stdout和stderr输出发送到日志文件中,但也会让你用fd 3连接到控制台,所以你可以做

echo "Some console message" 1>&3

只是向控制台写入消息,或

echo "Some console and log file message" | tee /dev/fd/3

向控制台和日志文件写入消息 – tee将其输出发送到自己的fd 1(这里是LOG_FILE)和您要求写入的文件(这里是fd 3,即控制台) 。

例:

exec 3>&1 1>>${LOG_FILE} 2>&1

echo "This is stdout"
echo "This is stderr" 1>&2
echo "This is the console (fd 3)" 1>&3
echo "This is both the log and the console" | tee /dev/fd/3

将打印

This is the console (fd 3)
This is both the log and the console

在控制台和放

This is stdout
This is stderr
This is both the log and the console

进入日志文件。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读