[英]setting crontab from bash script
我已經寫了以下腳本,但是出現錯誤sqlcorn.sh: No such file or directory
這是腳本
#!/bin/bash
ORACLE_HOME="/opt/app/oracle/product/11.2.0/dbhome_1"
ORACLE_SID="HEER"
ORACLE_USER="USER1"
ORACLE_PASSWORD="USERP"
echo "export ORACLE_HOME=$ORACLE_HOME" >> sqlcronprocedure.sh
echo "export PATH=\$ORACLE_HOME/bin:\$PATH" >> sqlcronprocedure.sh
echo "export ORACLE_SID=$ORACLE_SID" >> sqlcronprocedure.sh
echo "rTmpDir=/tmp" >> sqlcronprocedure.sh
echo "sqlplus -s $ORACLE_USER@$ORACLE_SID/$ORACLE_PASSWORD > $rTmpDir/deleteme.txt 2>&1 <<EOF" >> sqlcronprocedure.sh
echo " select 1 from dual;" >> sqlcronprocedure.sh
echo " execute someproc(1000,14);" >> sqlcronprocedure.sh
echo "EOF" >> sqlcronprocedure.sh
chmod 755 sqlcronprocedure.sh
crontab -l > sqlcron.sh
echo "0,15,30,45 * * * * /sqlcronprocedure.sh" >> sqlcron.sh
crontab sqlcorn.sh
這是我的第一個腳本。 所以我很抱歉如果事情太明顯了
真正的問題:您在crontab
命令上拼寫了錯誤的文件名。 更改為:
crontab sqlcorn.sh
至
crontab sqlcron.sh
有關您的代碼的更多注釋:
您的多個echo
命令最好寫為“ here文檔”。 而不是這樣:
echo "export ORACLE_HOME=$ORACLE_HOME" >> sqlcronprocedure.sh
echo "export PATH=\$ORACLE_HOME/bin:\$PATH" >> sqlcronprocedure.sh
echo "export ORACLE_SID=$ORACLE_SID" >> sqlcronprocedure.sh
echo "rTmpDir=/tmp" >> sqlcronprocedure.sh
echo "sqlplus -s $ORACLE_USER@$ORACLE_SID/$ORACLE_PASSWORD > $rTmpDir/deleteme.txt 2>&1 <<EOF" >> sqlcronprocedure.sh
echo " select 1 from dual;" >> sqlcronprocedure.sh
echo " execute someproc(1000,14);" >> sqlcronprocedure.sh
echo "EOF" >> sqlcronprocedure.sh
你可以這樣做:
cat <<EOF >sqlcronprocedure.sh
export ORACLE_HOME=$ORACLE_HOME
export PATH=\$ORACLE_HOME/bin:\$PATH
export ORACLE_SID=$ORACLE_SID
rTmpDir=/tmp
EOF
cat <<END_OF_SCRIPT >sqlcronprocedure.sh
export ORACLE_HOME=$ORACLE_HOME
export PATH=\$ORACLE_HOME/bin:\$PATH
export ORACLE_SID=$ORACLE_SID
rTmpDir=/tmp
sqlplus -s $ORACLE_USER@$ORACLE_SID/$ORACLE_PASSWORD > $rTmpDir/deleteme.txt 2>&1 <<EOF
select 1 from dual;
execute someproc(1000,14);
EOF
END_OF_SCRIPT
這比較容易閱讀。 (您的版本不是正確的,只是很難閱讀且容易出錯;您必須在>> sqlcronprocedure.sh
和每一行上都獲得>> sqlcronprocedure.sh
。)
注意:您可以使用>>
來構建sqlcronprocedure.sh
,如果存在,它將追加到現有的sqlcronprocedure.sh
。 我認為那不是你想做的。 您可能想從頭開始創建文件。 我的代碼假定您要創建文件而不是附加到文件。
腳本的最后一部分:
crontab -l > sqlcron.sh
echo "0,15,30,45 * * * * /sqlcronprocedure.sh" >> sqlcron.sh
crontab sqlcorn.sh
除了兩件事,還可以。
首先, sqlcron.sh
不是文件的好名字,因為它不是shell腳本。 只需將其sqlcron
。 該系統無關緊要,但您應該這樣做。
第二,我上面提到的拼寫錯誤。
您需要在腳本中指定sqlcron.sh的完整路徑...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.