#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

