标签:
问题描述:
写了一个exp的脚本,放到了oracle的crontab中,但一直不能执行。
问题原因
crond默认不会加载该用户的.profile和.bashrc文件,它的执行环境只能有一些最基本的环境变量,因此exp的命令因找不到而不执行。
验证过程
写了一个脚本,赋予777权限 [root@DBBANK ~]# cat /tmp/wjf/env env |wall分别把这个脚本加入到root和oracle两个用户的定时任务中
[root@DBBANK ~]# whoami root [root@DBBANK ~]# crontab -l 01 * * * * /tmp/wjf/env [root@DBBANK ~]#
[oracle@DBBANK ~]$ whoami oracle [oracle@DBBANK ~]$ crontab -l 02 * * * * /tmp/wjf/env [oracle@DBBANK ~]$时间到,执行结果为
Broadcast message from root@DBBANK (Fri May 8 17:36:02 2015): SHELL=/bin/sh USER=root PATH=/usr/bin:/bin _=/usr/bin/env PWD=/root HOME=/root SHLVL=2 LOGNAME=root
[oracle@DBBANK ~]$ Broadcast message from oracle@DBBANK (Fri May 8 17:38:01 2015): SHELL=/bin/sh USER=oracle PATH=/usr/bin:/bin _=/usr/bin/env PWD=/home/oracle HOME=/home/oracle SHLVL=2 LOGNAME=oracle可以看出crond打开的shell环境。只有一些最基本的环境变量,所以,你不要想着把oracle下的命令写成脚本放在oracle的定时任务就万事大吉了。实际它是不行的。
解决办法
在脚本里手动export环境变量。
或者
在脚本最前面source 环境变量文件
或者
. (空格) 环境变量文件
标签:
原文地址:http://blog.csdn.net/jx_jy/article/details/45582949