gpt4 book ai didi

linux - 如何在 Linux/bash 中为 shell 脚本创建状态日志

转载 作者:太空宇宙 更新时间:2023-11-04 09:19:23 25 4
gpt4 key购买 nike

我有一个 shell 脚本。我正在向该脚本传递文件中的参数。此文件包含表名

脚本运行良好。我能够对文件中的所有表执行命令。

shell 脚本

#!/bin/bash

[ $# -ne 1 ] && { echo "Usage : $0 input file "; exit 1; }
input_file=$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
}

while read table ;do
sqoop job --exec $table > /home/$USER/logging/"${table}_log" 2>&1
done < ${input_file}

g_STATUS=$?
log_status $g_STATUS "Sqoop job ${table}"

我正在尝试收集脚本的状态日志

我想分别为每个表收集状态日志

我想要什么

2017-04-28 20:36:41 [ERROR] sqoop job table1 EXECUTION [Status] 2 : failed
2017-04-28 20:36:41 [ERROR] sqoop job table2 EXECUTION [Status] 2 : failed

我得到了什么

如果最后一个表的脚本失败

2017-04-28 20:38:41 [ERROR] sqoop job EXECUTION [Status] 2 : failed 

如果最后一张表的脚本成功则

2017-04-28 20:40:41 [ERROR] sqoop job [Status] 0 : success    

我哪里做错了,我应该做出哪些改变才能获得预期的结果。

最佳答案

改变

while read table ;do 
sqoop job --exec $table > /home/$USER/logging/"${table}_log" 2>&1
done < ${input_file}

g_STATUS=$?
log_status $g_STATUS "Sqoop job ${table}"

while read table ;do 
sqoop job --exec $table > /home/$USER/logging/"${table}_log" 2>&1
g_STATUS=$?
log_status $g_STATUS "Sqoop job ${table}"
# Any other command you want to run on using $table should be placed here
done < ${input_file}

while 循环只运行 whiledone 行中的代码。因此,要记录所有表,您需要在 while 循环内运行日志记录。

此外,$table 在循环的迭代中发生变化,因此任何要在所有表上运行的命令都需要在循环内运行。

关于linux - 如何在 Linux/bash 中为 shell 脚本创建状态日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43687989/

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