Eason

咸鱼咯

crontab执行脚本时的环境变量问题

今天找了个脚本去执行RMAN备份ORACLE数据库,手工执行脚本验证可以生成备份,把脚本挂倒crontab配置执行时间后,发现脚本是被执行了,但是查看备份目录中并没有生成备份文件。

此时发现有新的系统邮件,打开一看提示我crontab刚刚执行的脚本有错误:

1

 

查看了一下orabackup.sh文件的12和37两行的信息如下:

2

 

求助经常写脚本的同时后得知原来是环境变量没有被crontab认领,crontab在执行脚本的时候根本比知道$ORACLE_HOME这个环境变量指向到哪儿去。

接下来就简单了只要在脚本中申明oracle账户的ORACLE_BASE、ORACLE_HOME和PATH的变量就行了,考虑到这样一来需要加入的行太多,干脆在脚本最开头加上下面的引用:

source /home/oracle/.bash_profile

添加引用后crontab最终执行备份脚本成功。

 问题分析:

我是在oracle账户下挂载备份脚本到crontab的,按惯性思维来说crontab在执行这个脚本的时候已经启用了Oracle账户的所有环境变量。可是不知为何crontab却没有启用任何oracle的环境变量。

经过这次吃亏,今后无论些什么脚本都一定要先引用当前用户的变量了,如果无可引用就只能自己先在脚本中该定义好所有变量。

Comments are currently closed.