关于linux crontab的一点疑惑 200

脚本没问题的,手动能够执行,我的设置是这样的:利用oracle用户来执行脚本,从而产生从数据库查询出来的数据步骤:1.切换到了oracle用户shell2.crontab... 脚本没问题的,手动能够执行,
我的设置是这样的:利用oracle 用户 来执行脚本,从而产生从数据库查询出来的数据
步骤: 1.切换到了oracle 用户shell
2. crontab -e 添加了oracle 用户的定时任务
3. 定时任务在执行我的脚本文件是 报错

line 11: sqlplus: command not found
但是上面的 sqlplus 命令我手动输入却可以执行,刚开始我以为你当 crontab 切换用户的时候利用了 su oracle 这样的话应该是我的环境没在 root 下 配置 。于是我就设置root的.bash_profile环境变量,之后再次手动测试 sqlplus 是可以的。 再次修改crontab 但是他还是报错 说 sqlplus 命令无法找到。请问要怎么解决
展开
 我来答
匿名用户
2013-05-12
展开全部
crontab 是系统级的,所以你设置环境变量没有用,环境变量是某个用户下的,
只能在 你的shell 脚本里面把要用到的变量都 申明一下,export。
或者说,你把 你的某个用户的环境变量直接 copy 到shell的前面就可以了。
options_mark
2013-05-12 · TA获得超过168个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:134万
展开全部

相应的Shell环境变量没有加载到脚本中。


解决方法:

将oracle 相关环境变量加入到脚本中。

1. 

whereis sqlplus  #执行这条命令,会返回命令所在的完整路径。或者找到命令所在目录

假如返回是


/usr/local/oracle/bin/sqlplus


2. echo $PATH    #打印现在path环境变量

假如为

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


3. 相关信息加入到脚本中

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
export ORACLE_DIR=/usr/local/oracle/bin
export PATH=$ORACLE_DIR:$PATH


如以上还是不行,可尝试

在#!/bin/bash下加入

. /etc/init.d/functions


希望对你有帮助.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmtwlhxs
2013-07-03 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:196万
展开全部
环境变量问题.脚本里面全部更改为绝对路径.或者在脚本前面重新定义环境变量.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ppkingpping
2013-05-12 · TA获得超过894个赞
知道小有建树答主
回答量:705
采纳率:0%
帮助的人:620万
展开全部
我觉得你应该在crontab中填写命令完整的路径,如shutdwon ,应该是
/sbin/shutdown
sqlplus也应该填写完整的路径,先用whereis sqlplus找出路径,再在crontab中填写
完整的路径
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kerving
2013-05-16 · TA获得超过985个赞
知道小有建树答主
回答量:417
采纳率:0%
帮助的人:367万
展开全部
su oracle使用的是当前用户的环境;
su - oracle使用的是oracle的用户环境;
如果你不能确定你就直接在脚本里面声明环境变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(12)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式