crontab中执行sqlplus失效

本文介绍了解决在crontab环境中使用sqlplus出现失效的问题,通过导入环境变量的方式使得crontab能够正常执行sqlplus命令。包括在/root/.bashrc文件中导入环境变量的方法以及提供了一个测试脚本进行验证。

相关文章:

crontab的进程里面无法使用sqlplus,如何设置可以使用呢?

http://bbs.chinaunix.net/thread-815757-1-1.html

 

 

crontab中执行sqlplus失效,环境变量的缘故。crontab跟shell的环境变量是不一样的。所以要在脚本中加入

. /root/.bashrc

以导入环境变量。(可能不同的linux系统使用的配置文件名称不一样)

直接将数据库相关度的环境变量在脚本中声明也可以(至少在我的系统上是这样的):

export ORACLE_BASE=/oracle/ora9
export ORACLE_HOME=/oracle/ora9/product/9.2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=bsmp
export ORACLE_TERM=xterm

当然,以上声明是/root/.bashrc中的 --!

 

以下是测试脚本:

#!/bin/bash
. /root/.bashrc

sqlplus --help

#---end---

将该脚本放入crontab执行

* * * * * bash /home/test.sh>/home/test.log

显示出sqlplus的帮助信息就说明可以用sqlplus了。

 

在Linux系统中,`crontab`是一个用于定期执行任务的工具。你可以通过它来定时运行各种命令、脚本甚至是C程序。 ### 步骤一:编写并编译C程序 首先你需要有一个已经写好的C源文件,并将其编译成可执行文件。假设你的C源码保存在一个叫做`my_program.c`的文件里: ```bash gcc -o my_program my_program.c ``` 这将会生成名为`my_program`的二进制文件,默认位于当前目录下.如果希望将这个文件放到其他路径(如 `/usr/local/bin/my_program`) ,可以在编译时指定输出路径: ```bash sudo gcc -o /usr/local/bin/my_program my_program.c ``` ### 步骤二:设置环境变量 (如有必要) 有时直接从crontab调用可能会遇到找不到库或依赖的问题。因此建议明确地写出所有需要加载的动态链接库所在的路径。例如,在某些情况下你可能需要添加一行类似这样的内容到crontab配置之前: ```bash LD_LIBRARY_PATH=/path/to/libraries:$LD_LIBRARY_PATH export LD_LIBRARY_PATH ``` 不过对于大多数简单场景来说,这一步并不是必需的。 ### 步骤三:创建一个新的cron作业 接下来打开用户级别的crontab编辑器(每个用户的计划任务都是独立存储的),可以输入下面这条命令来进行操作: ```bash crontab -e ``` 然后按照时间间隔的要求填写相应的时间表达式以及想要执行的任务命令行。比如我们想每天凌晨两点钟执行上面提到的那个叫作 `my_program` 的程序的话,就可以这么写: ``` 0 2 * * * /absolute/path/to/my_program >> /var/log/cronjob.log 2>&1 ``` 这里的关键点在于: - 使用绝对路径指明你要运行的目标文件的位置; - 将标准输出和错误信息重定向至日志文件,以便日后检查是否有任何异常情况发生;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值