我有一个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 回答
回答自己的问题:
脚本在添加到crontab时正在中止,因为用户已切换且无法假脱机
/dev/stderr
,因为新用户没有/dev/stderr
的写入权限 . 所以有O/S Message: Permission denied
错误 . 所以它无法从数据库中获取所需的数据 .谢谢大家的回复 .