Chinaunix
标题:
crontab疑惑
[打印本页]
作者:
ggoodstudy
时间:
2011-11-04 15:53
标题:
crontab疑惑
用oracle用户(crontab -e)做了一个定时任务:
[oracle@localhost dp]$ crontab -l
49 15 * * * /dbbackup/dp/test.sh
[oracle@localhost dp]$ cat test.sh
touch /dbbackup/dp/aa
echo mengxing>aa
我单独执行./test.sh可以生成aa文件且把第二行的数据写入到了aa文件中,可是我把这个shell作为定时任务来执行的时候只生成了aa文件,没有把第二行的内容写入到第一行创建的aa文件中,就好像这个定时任务只执行了脚本中第一行的内容,请大家解释一下,如果要两行脚本内容都执行该怎么写呢?谢谢!
作者:
taojie2000
时间:
2011-11-04 16:00
回复
1#
ggoodstudy
echo ..
aa的路径写全
作者:
ggoodstudy
时间:
2011-11-04 16:11
回复
2#
taojie2000
恩 路径写全就可以了!还有另外一个疑问
[oracle@localhost dp]$ ll
总计 8
-rwxrwxrwx 1 oracle oinstall 159 11-04 14:27 dp.sh
-rwxr-xr-x 1 oracle oinstall 52 11-04 16:02 test.sh
[oracle@localhost dp]$ cat test.sh
touch /dbbackup/dp/aa
echo mengxing>/dbbackup/dp/aa
[oracle@localhost dp]$ cat dp.sh
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
expdp scott/tiger schemas=infocollect dumpfile=infocollect.dmp logfile=infocollect.log directory=dpdata
为啥我用如下的定时任务执行dp.sh就不行呢(单独执行./dp.sh是没有问题的)???指定时间到了后什么反应都没有,我看也不是权限的问题啊,高手指定一下,谢谢!
[oracle@localhost dp]$ crontab -l
06 16 * * * /dbbackup/dp/dp.sh
作者:
taojie2000
时间:
2011-11-04 16:13
回复
3#
ggoodstudy
那脚本里的 命令写全路径
作者:
ggoodstudy
时间:
2011-11-04 16:47
回复
4#
taojie2000
这个directory=dpdata路径是在数据库里面创建的!
create directory dpdata as '/dbbackup/dp';
grant read,write on directory dpdata to public;
作者:
taojie2000
时间:
2011-11-04 16:54
回复
5#
ggoodstudy
expdp 命令
作者:
ggoodstudy
时间:
2011-11-04 16:59
回复
6#
taojie2000
是的 知道问题出在哪么?这个脚本单独执行是没问题的,为啥一放到crontab中就什么反应都没有呢!!~~
作者:
taojie2000
时间:
2011-11-04 17:08
回复
7#
ggoodstudy
crontab 不直接引用环境变量 需要在里面自己额外定义 或 命令就写全路径
作者:
chenyx
时间:
2011-11-04 17:43
crontab调用的命令需要全路径调用.
作者:
aljunied
时间:
2011-11-04 19:40
本帖最后由 aljunied 于 2011-11-04 19:41 编辑
放着几行在你的dp.sh里
ORACLE_HOME=/path/to/oracle/home
LIBRARY_PATH=$ORACLE_HOME/lib:$LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_HOME LIBRARY_PATH PATH
复制代码
另外脚本的第一行最好指明使用什么shell
#!/bin/bash
复制代码
作者:
chenyx
时间:
2011-11-04 20:22
同意楼上的,写脚本要养成习惯,在脚本的第一行写上要是用的shell
作者:
harrison_han
时间:
2011-11-05 13:18
同意11楼,expdp放到crontab中时需要将ORACLE_HOE, ORACLE_SID写到脚本中,同时expdp命令要用全路径方式写,即/u01/......./expdp
作者:
9ding
时间:
2011-11-06 21:52
同意11楼,建议下次遇到问题,多看看/var/log/cron 分析下执行结果是否报错。
另外也可以分析下系统提示邮件/var/spool/mail/root
作者:
ggoodstudy
时间:
2011-11-07 09:14
谢谢楼上各位的指点!
我用如下的方式怎么还是不行呢?我的环境变量与.bash_profile中一致了,望帮忙看看,谢谢!
oracle@localhost dp]$ ll
-rwxrwxrwx 1 oracle oinstall 365 11-07 09:08 dp.sh
-rwxr-xr-x 1 oracle oinstall 52 11-04 16:02 test.sh
[oracle@localhost dp]$
[oracle@localhost dp]$ crontab -l
10 9 * * * /dbbackup/dp/dp.sh
[oracle@localhost dp]$ cat dp.sh
#!/bin/bash
ORACLE_BASE=/app/db/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
export PATH=$ORACLE_HOME/bin
PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
/app/db/oracle/product/11.2.0/dbhome_1/bin/expdp infocollect/infocollect schemas=infocollect dumpfile=infocollect.dmp logfile=infocollect.log directory=dpdata
[oracle@localhost dp]$ cat /home/oracle/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
ORACLE_BASE=/app/db/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
export PATH=$ORACLE_HOME/bin
PATH
export ORACLE_SID=orcl
alias sqlp='sqlplus / as sysdba'
作者:
ggoodstudy
时间:
2011-11-07 09:30
补充点日志/var/spool/mail/oracle的内容,是不是环境变量没生效??
Export: Release 11.2.0.2.0 - Production on Mon Nov 7 09:20:01 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
UDE-12162: operation generated ORACLE error 12162
ORA-12162: TNS:net service name is incorrectly specified
From
oracle@localhost.localdomain
Mon Nov 7 09:26:01 2011
Return-Path: <
oracle@localhost.localdomain
>
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by localhost.localdomain (8.13.8/8.13.
with ESMTP id pA71Q1N5027172
for <
oracle@localhost.localdomain
>; Mon, 7 Nov 2011 09:26:01 +0800
Received: (from oracle@localhost)
by localhost.localdomain (8.13.8/8.13.8/Submit) id pA71Q1g4027171;
Mon, 7 Nov 2011 09:26:01 +0800
Date: Mon, 7 Nov 2011 09:26:01 +0800
Message-Id: <
201111070126.pA71Q1g4027171@localhost.localdomain
>
From:
root@localhost.localdomain
(Cron Daemon)
To:
oracle@localhost.localdomain
Subject: Cron <oracle@localhost> /dbbackup/dp/dp.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/oracle>
X-Cron-Env: <
ATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=oracle>
X-Cron-Env: <USER=oracle>
作者:
hsrenqing
时间:
2011-11-07 10:32
你的脚里还是有不对的地方,呵呵,建议加上在第二行加上 set -xv 自己调试下看看哦
作者:
cjl_2029
时间:
2011-11-07 10:54
{:2_167:}好贴
作者:
ggoodstudy
时间:
2011-11-07 12:03
回复
16#
hsrenqing
哪里不对啊?? 之前做计划的时候都挺顺利的~~
作者:
hsrenqing
时间:
2011-11-07 13:48
第二行加上set -xv执行下看看结果,贴上图哦
如果手工执行正常,你切换到根目录用绝对路径执行一下看看
作者:
hsrenqing
时间:
2011-11-07 13:52
还有,你把你要用的可执行文件都做成变量声明出来,这样,基本上手动能做的工作都可以用脚本来做了
作者:
yyf1986
时间:
2011-11-09 10:29
用su - oracle 吧
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2