最近在写一个Hadoop系列操作的调度脚本,由crontab调度执行。脚本单独执行没有任何问题,但是一旦执行hadoop相关操作,如hive、Hadoop相关命令,就莫名其妙的失败。查了很多资料,后来才发现是环境变量的问题,需要在脚本中添加“source /etc/profile”命令,对于具有多个用户不同配置的系统,则添加source ~/.base_profile。经过测试,果然有效。
此外,还需要注意的地方有:
1、在crontab调度器中,在脚本前加不加sh 都没有影响。
2、在所有脚本中批量添加“source /etc/profile " 的方法: sed -i -e "/bin/bash/asource /etc/profile" 。 如果是添加多行,可以用'\n' 连接相应的命令