免费注册 查看新帖 |

Chinaunix

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

[系统管理] AIX 下crontab任务执行错误? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-30 16:28 |只看该作者 |倒序浏览
OS:AIX5.3
oracle 用户下一sh脚本,单独执行此脚本可以成功执。
但是放到crontab 下执行,从/var/adm/cron/log下看
到大部是以下错误,请问大侠什么原因?

# tail -10 log
oracle    : CMD (  /u05/home/erp/load_data.sh ) : PID ( 974988 ) : Thu Aug 30 15:56:00 2012
Cron Job with pid: 974988 Failed
oracle    : CMD (  /u05/home/erp/load_data.sh ) : PID ( 790690 ) : Thu Aug 30 16:00:00 2012
Cron Job with pid: 790690 Failed
oracle    : CMD (  /u05/home/erp/load_data.sh ) : PID ( 9371858 ) : Thu Aug 30 16:05:00 2012
Cron Job with pid: 9371858 Failed
oracle    : CMD (  /u05/home/erp/load_data.sh ) : PID ( 9474166 ) : Thu Aug 30 16:10:00 2012
Cron Job with pid: 9474166 Successful
oracle    : CMD (  /u05/home/erp/load_data.sh ) : PID ( 9412828 ) : Thu Aug 30 16:15:00 2012
Cron Job with pid: 9412828 Failed

论坛徽章:
0
2 [报告]
发表于 2012-08-30 20:01 |只看该作者
把问题描述清楚一点。

操作系统为: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 /var/adm/cron/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

论坛徽章:
12
技术图书徽章
日期:2014-07-11 16:27:5215-16赛季CBA联赛之山西
日期:2016-01-08 16:10:11操作系统版块每日发帖之星
日期:2015-08-01 06:20:002015亚冠之武里南联
日期:2015-06-11 01:12:162015年亚洲杯之阿联酋
日期:2015-03-20 11:41:462015年亚洲杯纪念徽章
日期:2015-03-18 18:08:422015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-10 22:23:32天秤座
日期:2014-08-20 15:53:35水瓶座
日期:2014-08-11 12:08:51午马
日期:2014-07-23 23:03:38IT运维版块每日发帖之星
日期:2016-02-18 06:20:00
3 [报告]
发表于 2012-08-30 21:54 |只看该作者
shell中需要export 所需的环境变量,如 PATH ORACLE_HOME ORACLE_SID 等。

论坛徽章:
0
4 [报告]
发表于 2012-08-30 23:01 |只看该作者
应该是这个原因,不过通过变通的办法也解决了。

想知道一下,同是在oracle用户,手工执行可以读取到这些变量PATH ORACLE_HOME ORACLE_SID 等,为什么到crontab 下就不行了呢?

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

应该是这个原因,不过通过变通的办法也解决了。

想知道一下,同是在oracle用户,手工执行可以读取到这些变量PATH ORACLE_HOME ORACLE_SID 等,为什么到crontab 下就不行了呢?

   

论坛徽章:
0
6 [报告]
发表于 2012-08-31 08:42 |只看该作者
crontab 使用的是系统的环境变量。可以修改environment里的环境变量,也可以将用户的profile写进crontab脚本。

论坛徽章:
0
7 [报告]
发表于 2012-08-31 20:49 |只看该作者

问题描述: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