【问题标题】:Permanently redirect all STDERR (not STDOUT) in a session to a logfile -- like script将会话中的所有 STDERR(不是 STDOUT)永久重定向到日志文件——比如脚本
【发布时间】:2019-09-04 03:16:20
【问题描述】:

我想将所有触发错误的命令以及这些命令的错误输出 (stderr) 存储在数据库中。作为第一步,我尝试将命令和错误输出(如果有)存储到目录中的日志文件中。

我知道您可以使用管道将单个命令的输出重定向到文件:

ls -al 2>> /path/to/running/file.log

我也知道你可以启动一个脚本会话来保存所有终端输出:

script /path/to/running/file.log

但我不想存储标准输出或标准输入。

这是一个可以做我想做的事情的脚本:

#! /usr/bin/env bash

exec_date=$(date '+%F_%T')
$@ 2> "${exec_date}.log"
if [ $? -eq 0 ] ; then
  rm "${exec_date}.log"
else
  echo "$@" >> "${exec_date}.log"
fi

问题是用户必须在每个命令之前输入 - 我也认为它效率低下。难道没有一种简单的方法可以将 stderr 的位置设置为单独的文件或其他东西吗?

【问题讨论】:

    标签: bash stderr


    【解决方案1】:

    您正在寻找exec

    exec 2>>/path/to/running/file.log
    

    【讨论】:

    • 啊!谢谢!我知道必须有办法做到这一点。我找了一辈子也找不到。非常感谢 [=
    猜你喜欢
    • 2011-07-16
    • 2019-06-21
    • 2014-07-22
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多