关于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 命令无法找到。请问要怎么解决 展开
我的设置是这样的:利用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 命令无法找到。请问要怎么解决 展开
14个回答
2013-05-12
展开全部
crontab 是系统级的,所以你设置环境变量没有用,环境变量是某个用户下的,
只能在 你的shell 脚本里面把要用到的变量都 申明一下,export。
或者说,你把 你的某个用户的环境变量直接 copy 到shell的前面就可以了。
只能在 你的shell 脚本里面把要用到的变量都 申明一下,export。
或者说,你把 你的某个用户的环境变量直接 copy 到shell的前面就可以了。
展开全部
相应的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
希望对你有帮助.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
环境变量问题.脚本里面全部更改为绝对路径.或者在脚本前面重新定义环境变量.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得你应该在crontab中填写命令完整的路径,如shutdwon ,应该是
/sbin/shutdown
sqlplus也应该填写完整的路径,先用whereis sqlplus找出路径,再在crontab中填写
完整的路径
/sbin/shutdown
sqlplus也应该填写完整的路径,先用whereis sqlplus找出路径,再在crontab中填写
完整的路径
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
su oracle使用的是当前用户的环境;
su - oracle使用的是oracle的用户环境;
如果你不能确定你就直接在脚本里面声明环境变量
su - oracle使用的是oracle的用户环境;
如果你不能确定你就直接在脚本里面声明环境变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询