gpt4 book ai didi

linux - shell脚本输出到控制台和文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:21 24 4
gpt4 key购买 nike

我在 Linux 中有 shell 脚本,如下所示

#!/bin/bash
LOG_LOCATION=/home/$USER/logs
exec > >(tee /home/$USER/logs/"$1") 2>&1

[ $# -ne 1 ] && { echo "Usage : $0 table ";exit 1; }

table=$1

TIMESTAMP=`date "+%Y-%m-%d"`
touch /home/$USER/logs/${TIMESTAMP}.success_log
touch /home/$USER/logs/${TIMESTAMP}.fail_log
success_logs=/home/$USER/logs/${TIMESTAMP}.success_log
failed_logs=/home/$USER/logs/${TIMESTAMP}.fail_log

#Function to get the status of the job creation
function log_status
{
status=$1
message=$2
if [ "$status" -ne 0 ]; then
echo "`date +\"%Y-%m-%d %H:%M:%S\"` [ERROR] $message [Status] $status : failed" | tee -a "${failed_logs}"
#echo "Please find the attached log file for more details"
exit 1
else
echo "`date +\"%Y-%m-%d %H:%M:%S\"` [INFO] $message [Status] $status : success" | tee -a "${success_logs}"
fi
}


`hive -e "create table testing.${table} as select * from fishing.${table}"`

cp /home/$USER/logs/"$1" /home/$USER/debug/"$1"

g_STATUS=$?
log_status $g_STATUS "Hive create ${table}"

echo "***********************************************************************************************************************************************************************"

如果我的 shell 脚本中有这个

exec 2>&1 | tee /home/logging/"$1"

然后我只在控制台而不是在重定向的文件上获取日志。

如果我的脚本中有这个

exec> /home/logging/"$1" 2>&1

然后我在重定向的文件上有日志,但在控制台上没有。

我怎样才能在控制台和重定向文件上都有日志

最佳答案

您可以使用 exec 内置的进程替换:

exec > >(tee trace.log) 2>&1

将 stdout 和 stderr 重定向到一个文件并在终端中显示。

关于linux - shell脚本输出到控制台和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43502402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com