前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【小技巧】Shell批量处理报错信息,检测本地jar包是否存在

【小技巧】Shell批量处理报错信息,检测本地jar包是否存在

作者头像
十里桃花舞丶
发布2021-01-07 18:55:06
5920
发布2021-01-07 18:55:06
举报
文章被收录于专栏:桥路_大数据桥路_大数据

最近在搭建LLAP时,遇到一些问题,直接抛出一堆错误,提示Jar不存在。

代码语言:javascript
复制
Caused by: java.io.FileNotFoundException: File /opt/app/hadoop-2.7.7/share/hadoop/common/hadoop-lzo-0.4.20.jar:/opt/app/apache-tez-0.9.1-bin/hadoop-shim-0.9.1.jar:/opt/app/apache-tez-0.9.1-bin/hadoop-shim-2.7-0.9.1.jar:/opt/app/apache-tez-0.9.1-bin/tez-api-0.9.1.jar:/opt/app/apache-tez-0.9.1-bin/tez-common-0.9.1.jar:/opt/app/apache-tez-0.9.1-bin/tez-dag-0.9.1.jar does not exist

抛出了一堆使用冒号分割的jar包字符串。当然实际报错的jar包数量更多,这里截取了一部分。

虽然后来发现问题不是jar包缺失,而且配置问题。但当时拿到这个错误时,第一反应是这些jar缺失了,手动去目录中进行核对排查。

排查了一个之后,发现jar包存在。可能是其中的某个jar出现了缺失。

但全部手动排查,工作量太大。于是想到了使用脚本批量排查。

脚本的制作思路,就是先将这一大段jar包字符串作为参数传递进去,然后shell按照冒号" : "进行分割,然后对每个jar使用ls进行查看,如果缺失,则输出提示。

于是,最终shell脚本编写如下:

代码语言:javascript
复制
#! /bin/bash

 content=$1

 #遍历字符串
 OLD_IFS="$IFS" #保存旧的分隔符
 IFS=":"
 nodes=($content)
 IFS="$OLD_IFS" # 将IFS恢复成原来的
 for i in "${!nodes[@]}"; do
    info=`ls ${nodes[i]}`
    if [ -z "$info" ]; then
        echo "${nodes[i]}"
    fi
 done

这里主要涉及到对字符串的切分,保存为数组后,再对数据进行遍历。如果遇到不存在的jar包,则将jar字符串信息输出。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档