用crontab设置hive脚本的自动执行及shell 127返回码的解决

测试用crontab设置一段hive ETL脚本的自动执行,期间遇到了一个问题

设置好的脚本01.sh在命令行模式下 ./01.sh 可以执行,但是配置到crontab中就返回127码,hive后的任何命令都不执行

查看了其他网友贡献的解决方案,终于搞定。

解释一下127码:127码代表未找到命令,0代表成功执行。

所以我这里返回127说明crontab在执行01.sh时找不到hive命令。这就很神奇了,我单独敲hive -f 02.hive 是可以执行的,echo $HIVE_HOME 也是能显示路径的。想不通,最后没办法了 只好在shell脚本中再次指定一下环境变量 . /etc/profile(注意.与/之间的空格)。这里有一个可能,有两个环境变量的配置文件 /etc/profile /etc/bashrc 我hive_home开始是配置在/etc/bashrc,其他的比如 JDK/HADOOP/HBASE等等都是配置在/etc/profile 。别问我为啥整两个地方。我也忘了为啥。后来我都放到/etc/profile里了。但并不好使,还是得配置. /etc/profile在shell文件里。话不多说,看代码。

crontab内容

*/1 * * * * /home/hadoop/apache-hive-2.3.4-bin/01.sh /dev/null 2>&1>

*/1 * * * * echo $(date) >> /home/hadoop/test.txt

01.sh内容
    #!/bin/bash

    . /etc/profile

    echo hello >> /home/hadoop/test.txt

    hive -f /home/hadoop/apache-hive-2.3.4-bin/02.hive

    exitCode=$?
        if [ $exitCode -ne 0 ];then
            echo "hive execute failed,error_code:"$exitCode >> /home/hadoop/test.txt
            exit $exitCode
        fi

    echo done >> /home/hadoop/test.txt


02.hive内容
    use test;
    drop table t1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值