forum.bitel.ru
http://forum.bitel.ru/

[6.0] Работа update.sh во время обновления
http://forum.bitel.ru/viewtopic.php?f=22&t=10089
Страница 1 из 1

Автор:  abu [ 19 янв 2015, 12:52 ]
Заголовок сообщения:  [6.0] Работа update.sh во время обновления

Давно не обновлял биллинг, решил повспоминать, что и как. Запустил update.sh на биллинге в виртуальной машине. Получил в итоге запись в конце установочного лога:

Код:
./update.sh: 35: LOADER}: not found
# Starting DataLoader
./update.sh: 38: Syntax error: "fi" unexpected
root@virtualtest:/usr/local/BGBillingServer#


При обновлении старый update.sh поменялся новым, запись об ошибке относится к новому скрипту, ругается на эти строки:

Код:
if [ -e ${DATALOADER} ]; then
    echo "# Starting DataLoader"
    ${DATALOADER} start
fi


При этом у меня был не запущен dataloader, в инструкции указано, что если он не нужен, то его можно не запускать. После этого я попробовал запустить новый update.sh, получил сообщение:

Код:
Actual snapshot not found!


после чего сделал снапшот, повторный запуск update.sh обновлений не обнаружил, клиент обновился нормально.

Вопрос - это нормальное поведение скрипта обновления или нужно на что-то обратить внимание перед обновлением либо после него?

Версия биллинга после обновления:

Клиент: вер. 6.0 сборка 1366 от 15.01.2015 20:18:16
os: Linux; java: Java HotSpot(TM) Server VM, v.1.7.0_55
ВНИМАНИЕ: Спецификация версии 1.7 не рекомендуется
Сервер: вер. 6.0 сборка 1822 от 15.01.2015 20:18:19
os: Linux; java: Java HotSpot(TM) Client VM, v.1.7.0_55

Автор:  zavndw [ 19 янв 2015, 13:05 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

перво на перво поставить jdk 1.6
скрипт не меняли до обновления?
Есть такой файл в системе?
DATALOADER=/etc/init.d/bgdataloader

Автор:  dimOn [ 19 янв 2015, 14:51 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

Это в целом нормальное поведение. Все эти скрипты написаны под определённые окружения и в общем случае могут не работать. В новых линуксах (на systemd итп) они не будут работать 100%.

Автор:  abu [ 19 янв 2015, 15:13 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

zavndw писал(а):
перво на перво поставить jdk 1.6
скрипт не меняли до обновления?
Есть такой файл в системе?
DATALOADER=/etc/init.d/bgdataloader


Файл есть, с лета прошлого года, после общения с разработчиками и недолгих раздумий, работаю на java 1.7, без замечаний. Скрипт не менял - просто запустил то, что было, обновление виртуальной машины делал летом.

dimOn писал(а):
Это в целом нормальное поведение. Все эти скрипты написаны под определённые окружения и в общем случае могут не работать. В новых линуксах (на systemd итп) они не будут работать 100%.


Новых линуксов у меня нет, мне нужна лишь уверенность, что несмотря на эту ошибку, биллинг все же обновится корректно. На рабочем биллинге dataloader крутится. А принудительное создание снапшотов - это теперь по умолчанию прописано при обновлении?

Автор:  dimOn [ 19 янв 2015, 15:20 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

update.sh это всего лишь скрипт-обёртка, которая стопает сервисы (имея в виду совершенно определённые init-окружение) делает снапшот обновляет и запускает их обратно. можете всё это сделать руками. или подправить его под свою ситуацию.

Автор:  zavndw [ 19 янв 2015, 15:58 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

dimOn писал(а):
Это в целом нормальное поведение. Все эти скрипты написаны под определённые окружения и в общем случае могут не работать. В новых линуксах (на systemd итп) они не будут работать 100%.

у нас на systemd без нареканий все работает

Автор:  dimOn [ 19 янв 2015, 16:28 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

zavndw писал(а):
dimOn писал(а):
Это в целом нормальное поведение. Все эти скрипты написаны под определённые окружения и в общем случае могут не работать. В новых линуксах (на systemd итп) они не будут работать 100%.

у нас на systemd без нареканий все работает

И как интересно у вас на systemd работают /etc/init.d/bgdataloader ? Через костыли inittab-systemd?

Автор:  zavndw [ 19 янв 2015, 16:58 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

нет, у нас бородатый господин все "перепилил":)

Автор:  dimOn [ 19 янв 2015, 17:15 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

zavndw писал(а):
нет, у нас бородатый господин все "перепилил":)

ну про то и речь)

Автор:  abu [ 19 янв 2015, 18:34 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

dimOn писал(а):
update.sh это всего лишь скрипт-обёртка, которая стопает сервисы (имея в виду совершенно определённые init-окружение) делает снапшот обновляет и запускает их обратно. можете всё это сделать руками. или подправить его под свою ситуацию.


Старый файл и новый различаются только строками про снапшоты. Все остальные строки работали прежде без изменений и ошибок.

Старый файл update.sh :

Код:
#!/bin/sh

cd ${0%${0##*/}}.

SERVER=/etc/init.d/bgbilling
SCHEDULER=/etc/init.d/bgscheduler
DATALOADER=/etc/init.d/bgdataloader
TEE=/usr/bin/tee
DATE=/bin/date

time=`${DATE} +%d_%H:%M:%S`

if [ -e ${DATALOADER} ]; then
    echo "# Stopping DataLoader"
    ${DATALOADER} stop
fi
echo "# Stopping Scheduler"
${SCHEDULER} stop
echo "# Stopping Server"
${SERVER} stop
echo "# Start Updating"
 ./bg_installer.sh update | ${TEE} ./log_update_${time}
echo "# Starting Server"
${SERVER} start
echo "# Starting Scheduler"
${SCHEDULER} start
if [ -e ${DATALOADER} ]; then
    echo "# Starting DataLoader"
    ${DATALOADER} start
fi

if [ -e .bgclient_keystore_user -o -e .bgclient_keystore ]; then
    ./bgclient_javawebstart.sh
fi


Новый файл update.sh :

Код:
#!/bin/sh

cd ${0%${0##*/}}.

SERVER=/etc/init.d/bgbilling
SCHEDULER=/etc/init.d/bgscheduler
DATALOADER=/etc/init.d/bgdataloader
TEE=/usr/bin/tee
DATE=/bin/date



snapshot=`find ./snapshots -type f -mtime 0 | tail -1`
if [ -z $snapshot ]; then
    echo "Actual snapshot not found!"
    exit 0
fi
echo "Found actual snapshot: $snapshot"



time=`${DATE} +%d_%H:%M:%S`

if [ -e ${DATALOADER} ]; then
    echo "# Stopping DataLoader"
    ${DATALOADER} stop
fi
echo "# Stopping Scheduler"
${SCHEDULER} stop
echo "# Stopping Server"
${SERVER} stop
echo "# Start Updating"
 ./bg_installer.sh update | ${TEE} ./log_update_${time}
echo "# Starting Server"
${SERVER} start
echo "# Starting Scheduler"
${SCHEDULER} start
if [ -e ${DATALOADER} ]; then
    echo "# Starting DataLoader"
    ${DATALOADER} start
fi

if [ -e .bgclient_keystore_user -o -e .bgclient_keystore ]; then
    ./bgclient_javawebstart.sh
fi


Впечатление такое (но я тут совсем не разбираюсь - как работают запущенные скрипты bash в таких ситуациях), будто бы после подмены на диске старого файла новым, происходит выполнение строк из нового файла, по-крайней мере ошибка ссылается на строки именно из нового файла.

Автор:  dimOn [ 19 янв 2015, 18:37 ]
Заголовок сообщения:  Re: [6.0] Работа update.sh во время обновления

А... вы про это.. тут вообще неизвестно как поведёт себя bash, как мне кажется. Случай "при обновлении изменился update.sh" считаем исключительным. Лучше ещё раз запустить после обновления.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/