Реальная проблема: вы неправильно написали имя файла в команде crontab
.Измените его с:
crontab sqlcorn.sh
на
crontab sqlcron.sh
Еще несколько комментариев к вашему коду:
Ваши несколько команд echo
лучше написаны как "здесь документ"».Вместо этого:
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
прямо на eacn и на каждой строке.)
Примечание: вы используете >>
для сборки sqlcronprocedure.sh
, который добавляет к существующему sqlcronprocedure.sh
, если он существует.Я не думаю , что вы хотите сделать;Вы, вероятно, хотите создать файл с нуля.Мой код предполагает, что вы хотите создать файл, а не добавлять его.
Последняя часть вашего скрипта:
crontab -l > sqlcron.sh
echo "0,15,30,45 * * * * /sqlcronprocedure.sh" >> sqlcron.sh
crontab sqlcorn.sh
- это хорошо, за исключением двух вещей.
Во-первых, sqlcron.sh
не подходит для файла, так как это не сценарий оболочки;просто назовите это sqlcron
.Система не заботится, но вы должны.
Во-вторых, орфографическая ошибка, о которой я упоминал выше.