免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3851 | 回复: 5
打印 上一主题 下一主题

[系统管理] crontab 调用脚本错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-30 19:50 |只看该作者 |倒序浏览
操作系统为:AIX5.3, oracle 用户下一脚本单独手工执行没有问题,如果放到crontab里则执行不成功,请大侠指点一下问题在哪里?谢谢。

以用步骤在oracle用户下完成。
1.
shell脚本内容:
$ cat load_data.sh
#!/bin/ksh
ls -l /u05/home/erp/ftp/in |grep csv$ |awk '{print $NF}' >/u05/home/erp/ftp/in/csv.list
while read file_name
do
sqlplus -s erpapp/erpapp@ERPDB <<EOF
exec load_data('$file_name');
quit
EOF
done < /u05/home/erp/ftp/in/csv.list
$

2.
命令行下手工执行,执行成功。
$ sh /u05/home/erp/ftp/in/load_data.sh

PL/SQL procedure successfully completed.


3.
放到crontab里执行,则报如下错误,观察结果发现调用sqlplus出错
$ crontab -l
* * * * *  /u05/home/erp/ftp/in/load_data.sh


# tail -10 log
oracle    : CMD (  /u05/home/erp/ftp/in/load_data.sh ) : PID ( 9662506 ) : Thu Aug 30 17:14:00 2012
Cron Job with pid: 9662506 Failed
oracle    : CMD (  /u05/home/erp/ftp/in/load_data.sh ) : PID ( 9527432 ) : Thu Aug 30 17:15:00 2012
Cron Job with pid: 9527432 Failed
oracle    : CMD (  /u05/home/erp/ftp/in/load_data.sh ) : PID ( 9441422 ) : Thu Aug 30 17:16:00 2012
Cron Job with pid: 9441422 Failed
oracle    : CMD (  /u05/home/erp/ftp/in/load_data.sh ) : PID ( 9392258 ) : Thu Aug 30 17:17:00 2012
Cron Job with pid: 9392258 Failed
oracle    : CMD (  /u05/home/erp/ftp/in/load_data.sh ) : PID ( 9633942 ) : Thu Aug 30 17:18:00 2012
Cron Job with pid: 9633942 Failed

论坛徽章:
0
2 [报告]
发表于 2012-08-30 22:54 |只看该作者
问题解决了。
在root 下crontab -e
* * * * * su - oracle -c "sh /u05/home/erp/ftp/in/load_data.sh"

问题是解决了,也知道是环境变量的问题,但不知道到底是哪个变量的原因。

在oracle用crontab -e ,肯定有办法解决的。
* * * * *  /u05/home/erp/ftp/in/load_data.sh

论坛徽章:
0
3 [报告]
发表于 2012-08-30 22:56 |只看该作者
更改contab 试试:
  1. $ crontab -l
  2. * * * * *  ksh /u05/home/erp/ftp/in/load_data.sh
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-08-30 23:03 |只看该作者
回复 3# samsun639

谢谢回复,明天去试试.

   

论坛徽章:
0
5 [报告]
发表于 2012-08-31 08:41 |只看该作者
回复 2# anderlee

crontab环境变量的问题,
   如果没有报告语法相关的错误的话,一般会是path变量的问题,lz可以试试去找一下脚本执行过程中是否用到了什么命令,其路径不在crontab的path变量中

论坛徽章:
0
6 [报告]
发表于 2012-08-31 20:44 |只看该作者
官方答案:

环境产品,平台,机型,软件版本,等)AIX5L

问题描述:crontab中启动的shell脚本不能正常运行,但是使用手动执行没有问题,在$home/.profile中设定了脚本所需要的环境变量。

解答:cron命令的默认shell是/usr/bin/bsh,如果要在cron启动的脚本中使用ksh,就必须在脚本中的第一行添加“!/usr/bin/ksh”的声明。

如果cron进程启动的shell脚本设置了用户登录时的环境变量,就必须在cron启动的shell脚本中添加下面的内容,才能够在启动的脚本中使用
$home/.profile文件中的环境变量。

. $home/.profile

这是因为cron进程执行的shell脚本是不会自动加载用户目录下的.profile文件,所以需要脚本自己加载所需要的环境变量。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP