如果shell脚本在添加到crontab时失败,可能会出现什么错误?

时间:2015-09-01 10:01:21

标签: shell unix cron crontab

我有一个shell脚本,它使用sql查询生成的数据创建一个文本文件。当我手动运行它时,它运行得很好,但是当作业被添加到crontab时,它会失败,因为它无法从数据库中的表中获取少量必需参数。使用crontab计划作业时会发生什么变化? [编辑]
该脚本使用以下函数来执行作为参数传递的sql查询。当我手动运行它时,传递的sql查询返回所需的值,以便脚本成功运行。但是当它通过crontab运行时,sql查询没有返回数据,因此脚本异常退出,说明缺少必需的参数。

try_sql_spool() { ( sqlplus -SILENT /NOLOG @/dev/stdin << EndOfSQL WHENEVER OSERROR EXIT FAILURE WHENEVER SQLERROR EXIT FAILURE CONNECT $USER/$PWD@$SID SET SERVEROUTPUT OFF; SET TERMOUT OFF SET TRIMSPOOL ON SET PAGESIZE 0 SET LINESIZE 32767 SET FEEDBACK OFF SET VERIFY OFF SET TAB OFF SPOOL /dev/stderr $1 SPOOL OFF EndOfSQL ) #3<&1 1<&2 2<&3 3<&- }

提前致谢。

1 个答案:

答案 0 :(得分:0)

回答自己的问题:

脚本在添加到crontab时正在中止,因为用户已切换且无法假脱机/dev/stderr,因为新用户没有/dev/stderr的写入权限。所以有O/S Message: Permission denied错误。所以它无法从数据库中获取所需的数据。

感谢大家的回复。