问题描述:
写了一个exp的脚本,放到了oracle的crontab中,但一直不能执行。
问题原因
crond默认不会加载该用户的.profile和.bashrc文件,它的执行环境只能有一些最基本的环境变量,因此exp的命令因找不到而不执行。
验证过程
写了一个脚本,赋予777权限 [[email protected] ~]# cat /tmp/wjf/env env |wall
分别把这个脚本加入到root和oracle两个用户的定时任务中
[[email protected] ~]# whoami root [[email protected] ~]# crontab -l 01 * * * * /tmp/wjf/env [[email protected] ~]#
[[email protected] ~]$ whoami oracle [[email protected] ~]$ crontab -l 02 * * * * /tmp/wjf/env [[email protected] ~]$
时间到,执行结果为
Broadcast message from [email protected] (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
[[email protected] ~]$ Broadcast message from [email protected] (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 环境变量文件
或者
. (空格) 环境变量文件
时间: 2024-10-27 09:45:37