【发布时间】: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 的位置设置为单独的文件或其他东西吗?
【问题讨论】: