perl脚本的Crontab问题

perl脚本的Crontab问题,perl,crontab,sql-loader,Perl,Crontab,Sql Loader,上面是我的perl脚本的最后一行。当我从cli手动运行包含此行的脚本时,它可以工作。但当我把它放到crontab上时,它失败了 变量$sqlldr包含Oracle的sqlldr脚本的完整路径,包括其。当然,所有包含完整路径(包括文件名)的变量 另外,我的脚本多次调用系统,所有这些都运行得很好。我使用的是Ubuntu10.04服务器64位,我把我的脚本放到用户oracle的crontab中。 我真的受不了那里发生的事。有人能帮我吗?检查CLI和cron环境之间的差异-这将是理解问题的关键 就在你的

上面是我的perl脚本的最后一行。当我从cli手动运行包含此行的脚本时,它可以工作。但当我把它放到crontab上时,它失败了

变量$sqlldr包含Oracle的sqlldr脚本的完整路径,包括其。当然,所有包含完整路径(包括文件名)的变量

另外,我的脚本多次调用系统,所有这些都运行得很好。我使用的是Ubuntu10.04服务器64位,我把我的脚本放到用户oracle的crontab中。
我真的受不了那里发生的事。有人能帮我吗?

检查CLI和cron环境之间的差异-这将是理解问题的关键

就在你的系统之前。。调用perl put:

system("$sqlldr $oracleLogon control=$ctlFile log=$logFile data=$dateFile"); 

并将其与CLI中调用的env进行比较。

当脚本在命令行上工作,而不是在crontab上工作时,这通常是因为环境不同

在您的情况下,您正在尝试执行一个Oracle工具。所有Oracle工具都需要Oracle_HOME环境变量。这些变量在使用终端时设置,但在使用crontab时不设置

在脚本中,在启动SQL*Loader之前,尝试将ORACLE_HOME设置并导出到ORACLE客户端


请发布您的错误消息。如果它以静默方式失败,请尝试将STDOUT和STDERR从crontab调用重定向到一个文件,并发布结果。

获取失败并不能很好地描述您的错误。显示变量和错误消息的分配。-1表示不包含错误消息。从CLI运行时,是否以oracle用户身份运行?如果没有,那么您很可能在某个地方遇到许可问题。非常感谢。我应该像用户oracle一样设置cron环境。我的错误是,若我为指定的用户设置了crontab,这意味着根据/home/user/.profile,ENV set必须相同
system("env > ~/env_in_cron.txt");