Run gendb script if it
################################################## #!/bin/sh # # 1. shutdown linter kernel # 2. run testdb -r # 3. run gendb # 4. start linter kernel # 5. run inl # 6. shutdown linter kernel # 7. run testdb
#Включение файла с описанием настроек LINTER_BIN=/linter/bin . $LINTER_BIN/constants
#Включение файла с описанием имени пользователя и пароля . $LINTER_BIN/private_passwd
#NET_MBX=1458 #export NET_MBX # stop Linter $LINTER_BIN/stoplin
$LINTER_BIN/testdb -r -f /tmp/testdb.log -i 1 -p $POOL -s /tmp/idx.sql -g /tmp/gen.gdb retc=$? [ $retc -eq 0 ] && { echo -n "Database is OK" rm -f /tmp/idx.sql /tmp/gen.gdb exit 0 }
# Run gendb script if it exists [ -s /tmp/gen.gdb ] && { msg=`$LINTER_BIN/gendb /tmp/gen.gdb` #??? [ $? -ne 0 ] && { echo -n "Error running gendb : $msg" echo -n "Database recovery failed!" exit 1 } }
# Run sql script if exists [ -s /tmp/idx.sql ] && { # start linter kernel $LINTER_BIN/linter >
>
/tmp/linter.log # wait for linter startup (max 180 sec) $LINTER_BIN/chklinter -u $USER'/'$PASSWORD -t 180 [ $? -eq 0 ] && { echo -n "Can not start Linter kernel!" exit 1 } $LINTER_BIN/inl -u $USER'/'$PASSWORD -f /tmp/idx.sql [ $? -ne 0 ] && { echo -n "Error running inl" echo -n "Database recovery failed!" exit 1 } $LINTER_BIN/shut -u $USER'/'$PASSWORD $LINTER_BIN/lsyncd } $LINTER_BIN/testdb -r -f /tmp/testdb.log -i 1 -p $POOL -s /tmp/idx.sql -g /tmp/gen.gdb [ $? -eq 0 ] && { echo -n "Database successfully recovered." rm -f /tmp/idx.sql /tmp/gen.gdb exit 0 } echo -n "Database NO successfully recovered." exit 1 ######################################################
Эту программу можно вызвать в случае, если у нас обнаружен lock файл. Однако на проверку программой testdb может уйти достаточно много времени. Поэтому лучше вызывать этот файл только в случае, если ядро СУБД не запустилось.
Таким образом, с учетом всего вышесказанного файл startlin должен выглядеть следующим образом: