【发布时间】:2012-02-23 09:41:30
【问题描述】:
这是我第一次编写 shell 脚本,在给定的时间线上我的信息很少。虽然我正在阅读不同的教程,但我也想在这里问一下我想要什么。
我想编写一个 shell 脚本,它可以在任何机器上编辑 cronjob,添加一个每 15 分钟执行一次的新脚本。所以基本上我必须添加一个条目
0,15,30,45 * * * * /home/personal/scripts/cronSqlprocedure.sh
我想要的 shell 脚本
- 它将首先更改
cronSqlprocedure.sh的权限/执行权限 - 编辑 现有的 cron 作业并将这个新条目添加到其中。
如果可能,我也想通过 shell 脚本编写 cronSqlprocedure,因为它需要几个变量,这些变量可能因系统而异。
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=HEER
必须为cronSqlprocedure.sh 中的每台机器配置这些行。
#!/bin/bash
ORACLE_HOME="/opt/app/oracle/product/11.2.0/dbhome_1"
ORACLE_SID="HEER"
ORACLE_USER="USER1"
ORACLE_PASSWORD="USERPASS"
echo "export ORACLE_HOME=$ORACLE_HOME" >> $PWD/sqlcronprocedure.sh
echo "export PATH=\$ORACLE_HOME/bin:\$PATH" >> $PWD/sqlcronprocedure.sh
echo "export ORACLE_SID=$ORACLE_SID" >> $PWD/sqlcronprocedure.sh
echo "rTmpDir=/tmp" >> $PWD/sqlcronprocedure.sh
echo "sqlplus -s $ORACLE_USER@$ORACLE_SID/$ORACLE_PASSWORD > $rTmpDir/deleteme.txt 2>&1 <<EOF" >> $PWD/sqlcronprocedure.sh
echo " select 1 from dual;" >> $PWD/sqlcronprocedure.sh
echo " execute another_script(1000,14);" >> $PWD/sqlcronprocedure.sh
echo "EOF" >> $PWD/sqlcronprocedure.sh
chmod 755 $PWD/sqlcronprocedure.sh
crontab -l > $PWD/sqlcorn.sh
echo "0,15,30,45 * * * * $PWD/sqlcronprocedure.sh" >> $PWD/sqlcorn.sh
crontab $PWD/sqlcorn.sh
【问题讨论】:
-
小心使用
crontab -l- 某些版本的 crontab 会包含“请勿编辑此文件”之类的注释。您也许可以在这些平台上将您的 crontab 添加到 /etc/cron.d。 -
您能否具体说明添加“请勿编辑此文件”限制的
crontab -l版本?这似乎毫无意义;crontab命令的目的是允许您编辑文件中的条目。当然,您必须将已编辑的文件反馈回crontab,但是...