-------------------crontab 后 不执行----------------

horizonlyhw 2011-09-09 11:14:35
crontab -l后显示:

30 23 * * * su - oracle -c "/oracle/dmpbackup.sh" > /dev/null 2>&1



/oracle/dmpbackup.sh的内容是:

## XX dmp ##
exp xx/xx@orcl file=/data/dmpbackup/xx/xx`date +%Y%m%d`.dmp


为啥定时就不执行呢?


...全文
192 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fjkingx 2011-09-14
  • 打赏
  • 举报
回复
设置下ORACEL_HOME等试试,如:
crontab -e -u oracle

30 23 * * * ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 ORACLE_SID=xxxx /u01/app/oracle/product/10.2.0/db_1/bin/exp xx/xx@orcl file=/data/dmpbackup/xx.dmp


horizonlyhw 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 braveyly 的回复:]
我遇见过同样的问题,解决的方法是:

su - oracle -c "/oracle/dmpbackup.sh" > /dev/null 2>&1
换成一个单独的脚本文件
[/Quote]


-bash-3.2# su - oracle "/oracle/dmpbackup.sh" > /dev/null
/oracle/dmpbackup.sh: line 5: exp: command not found
/oracle/dmpbackup.sh: line 8: exp: command not found
/oracle/dmpbackup.sh: line 11: exp: command not found



不知道为啥 放在一起 就总提示exp not found 还是su没执行对吧?
horizonlyhw 2011-09-14
  • 打赏
  • 举报
回复
不确定是什么问题,说下我的解决方式:
把root和oracle用户默认的shell都改成ksh 原来是 bash

etc底下的profile文件里面 有几个空格,以前每次su切换用户的时候 都会有个异常提示,但是不影响功能,去掉那几个空格后,正常了(但不知道这个会不会影响此问题)

braveyly 2011-09-13
  • 打赏
  • 举报
回复
我遇见过同样的问题,解决的方法是:

su - oracle -c "/oracle/dmpbackup.sh" > /dev/null 2>&1
换成一个单独的脚本文件
horizonlyhw 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qq120848369 的回复:]
su -是一条命令,后边是一条命令,分开么。。
[/Quote]

su - oracle 是切换到oracle用户啊
oracle放到后面 那算个啥?
qq120848369 2011-09-13
  • 打赏
  • 举报
回复
su -是一条命令,后边是一条命令,分开么。。
horizonlyhw 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qq120848369 的回复:]
su -;oracle -c "/oracle/dmpbackup.sh" > /dev/null
[/Quote]

这是啥意思? 能帮忙解释一下么?
qq120848369 2011-09-13
  • 打赏
  • 举报
回复
su -;oracle -c "/oracle/dmpbackup.sh" > /dev/null
horizonlyhw 2011-09-13
  • 打赏
  • 举报
回复
试了半天了,重新描述下问题:

单句执行 su - oracle -c "/oracle/dmpbackup.sh"
会出现下面的问题:

-bash-3.2# su - oracle -c "/oracle/dmpbackup.sh" > /dev/null
/oracle/dmpbackup.sh[5]: exp: not found
/oracle/dmpbackup.sh[8]: exp: not found
/oracle/dmpbackup.sh[11]: exp: not found
-bash-3.2#


但是 分步执行 su - oracle
然后执行 /oracle/dmpbackup.sh
就可以成功。

这个应该和crontab没啥关系了 还请大家帮忙看看。 多谢
horizonlyhw 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qq120848369 的回复:]
su不用输密码的么?
[/Quote]

我是用root登录的 ~~
qq120848369 2011-09-13
  • 打赏
  • 举报
回复
su不用输密码的么?
horizonlyhw 2011-09-13
  • 打赏
  • 举报
回复
为啥分步执行 就行呢

比如 我先su 用户

然后 再执行.sh文件

这样就可以


但是连在一起就不行了
justkk 2011-09-09
  • 打赏
  • 举报
回复
应该是缺少相关的环境变量
在你的脚本的首行添加
. ~/.profile
shenghuiping2001 2011-09-09
  • 打赏
  • 举报
回复
给个思路吧:
用crontab -e 来编辑,写好后: “:wq” 保存。

这样肯定是执行的。

2: 再次检查你的shell,可以写个简单的shell 来测试一下。
vi /oracle/test.sh
!# /bin/sh
echo `date`

放到crontab 里。

1,194

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨IBM AIX平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • IBM AIX社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧