2017-01-03 5 views
0

У меня есть скрипт bash, который будет запускать команду db2 (список активных баз данных) и перенаправить вывод в файл, тогда я буду использовать этот файл в другом скрипте.Bash script on db2

Сценарий:

/DB2RM1/db2rm1/sqllib/bin/db2 list active databases > /home/occddma/scripts/data 

Примечания: Я поставил расположение к двоичным файлам db2 перед командой db2 в состояние запустить его из кронтаба.

Затем я помещал скрипт в задание crontab для обновления файла datadb каждую минуту, как показано ниже.

* * * * * /DB2RM1/db2rm1/mon_db2.sh 

При запуске скрипта формы командной строки она работает нормально, но когда он работает от crotab задания он перенаправляет ниже ошибку datadb файла.

SQL10007N Message "-1390" could not be retrieved. Reason code: "3". 
+0

Как вы выполняете эту команду через CLI? А для какой учетной записи создан cron? – ryekayo

+0

Я запускаю сценарий ./script_name, он отлично работает и обновляет файл datadb, пока cronjob добавлен в db2inst1 пользователь crontab, у которого есть скрипт, расположенный в его домашнем каталоге –

ответ

0

Скорее всего, вам необходимо загрузить свой профиль bash в свой скрипт. Как:

source /etc/profile 

или

source ~/.bash_profile 
1

Вы не зарядите db2profile. Этот файл находится в каталоге sqllib исходного каталога экземпляра.

Давайте предположим, что ваш экземпляр db2inst1, то вам необходимо позвонить:

. ~db2inst1/sqllib/db2profile 

После db2profile загружено, вы можете увидеть значение переменной среды DB2INSTANCE.

Один из способов проверить правильность загрузки среды - проверить, установлен ли DB2INSTANCE.

if [[ -z ${DB2INSTANCE} ]] ; then 
    echo "ERROR" 
    exit 1 
fi 

BTW, 1390 эта ошибка:

SQL1390C Переменная DB2INSTANCE среды не определена или недействительным.

+0

спасибо, что работает для меня –