Официальный сайт студ.городка НГТУ
Software » Как из shell-скрипта определить состояние сервера? 

#1  18.02.11 11:07

Как из shell-скрипта определить состояние сервера?

Сразу извинюсь за постановку вопроса)Но ситуация такая.
На сервере есть скрипт deploy.sh -он извлекает файлы и БД из бэкапа, тем самым переводит его в состояние основного сервера. Есть скрипт restore.sh, он возвращает старые файлы и БД, которые были до выполнения deploy.sh, тем самым перевод его в режим резервного.

Как мне хранить состояние, в котором сейчас находиться сервер, чтобы, например 2 раза не выполнили restore.sh, это нежелательно. Догадываюсь что можно завести файлик в него писать текущее состояние, но как из файла считать строку и использовать в сравнении. Я шелле не силен,как и в линуксе в общем))

Offline

#2  18.02.11 12:01

Re: Как из shell-скрипта определить состояние сервера?

GrAnD написал(а):

Как мне хранить состояние, в котором сейчас находиться сервер

я ниче не понял какое еще "состояние". если ты используешь тобой придуманные абстракции типа "первичный/вторичный/основной/запасной" то объясни как оно у тебя там завязано.
ни линукс, ни шелл тут не при чем.
самое простое - это держать состояние каких-то вещей в lock файлах.

и на первой же странице гугла мы находим

http://en.wikipedia.org/wiki/File_locking#Linux
http://gasparchilingarov.com/2008/03/22 … iya-shell/

Создание lock файла
Очень часто нужно бывает выполнять скрипт, который может делать непредсказуемые вещи, если его запустить параллельно. Особенно часто это бывает, когда скрипт запускается из cron, а предыдущий его экземпляр не успел завершиться.

Код::

Вот пример скрипта, который создает lock файл, и если он присутствует — то вылетает с ошибкой.
Код:
#!/bin/sh
LOCKFILE=/tmp/mylockif [ ! –s $LOCKFILE ]; then # проверяем, что lock файл пустой
echo $$ > $LOCKFILE # записываем идентификатор процесса в lock файл
# все действия скрипта нужно поместить здесь
: > $LOCKFILE # обнуляем lock файл
exit 0
else
# как пример — отсылаем почту root, из-за того,
# что не скрипт не может быть запущен
echo “PID `cat $LOCKFILE` running” | mailx –s “$0 can’t run” root
exit 1
fi

Этот скрипт можно переписать, чтоб он пытался бы запуститься несколько раз с паузами (просто добавить while и sleep), либо чтоб он убивал бы ранее запущенный скрипт, если тот выполняется более N секунд.

непонятно что мешало тебе спросить у гугла.

Offline

#3  19.02.11 13:19

Re: Как из shell-скрипта определить состояние сервера?

и чо где спасибы.

Offline

#4  21.02.11 12:30

Re: Как из shell-скрипта определить состояние сервера?

Укроп, спасибо.

Offline

#5  22.02.11 02:13

Re: Как из shell-скрипта определить состояние сервера?

позязя, ня

Offline

Software » Как из shell-скрипта определить состояние сервера? 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.024 сек.
Выполнено 14 запросов.