URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6320
[ Назад ]

Исходное сообщение
"помогите, пожалуйста!"

Отправлено leou , 30-Мрт-07 20:32 
Я начинающий сисадмин. Опыта еще не хватает. Получил такое задание: есть скрипт бэкапа, в который надо вставить проверку на запуск процесса ontape. если ontape запущен, то на почту должно отправляться письмо (типа "Бэкап не запущен") и бэкап соответственно не запускаться. если ontape не запущен, то должен запускаться бэкап. Помогите, пожалуйста! Заранее благодарен!

Содержание

Сообщения в этом обсуждении
"помогите, пожалуйста!"
Отправлено phpcoder , 30-Мрт-07 22:14 
>Я начинающий сисадмин. Опыта еще не хватает. Получил такое задание: есть скрипт
>бэкапа, в который надо вставить проверку на запуск процесса ontape. если
>ontape запущен, то на почту должно отправляться письмо (типа "Бэкап не
>запущен") и бэкап соответственно не запускаться. если ontape не запущен, то
>должен запускаться бэкап. Помогите, пожалуйста! Заранее благодарен!

А как вам собственно помочь-то? За вас написать? Ну давайте, попробую сходу прикинуть, а уж дотачивать до работоспособного состояния сами будете?

PID="`pidof ontape`" # можно юзать pgrep или парсить вывод ps
if [ -z "$PID" ]; then
    # ontape запущен
    # отправляем письмо с помощью программы mail(1)
    ...
    exit 1
fi



"помогите, пожалуйста!"
Отправлено leou , 02-Апр-07 20:57 
>>Я начинающий сисадмин. Опыта еще не хватает. Получил такое задание: есть скрипт
>>бэкапа, в который надо вставить проверку на запуск процесса ontape. если
>>ontape запущен, то на почту должно отправляться письмо (типа "Бэкап не
>>запущен") и бэкап соответственно не запускаться. если ontape не запущен, то
>>должен запускаться бэкап. Помогите, пожалуйста! Заранее благодарен!
>
>А как вам собственно помочь-то? За вас написать? Ну давайте, попробую сходу
>прикинуть, а уж дотачивать до работоспособного состояния сами будете?
>
>PID="`pidof ontape`" # можно юзать pgrep или парсить вывод ps
>if [ -z "$PID" ]; then
>    # ontape запущен
>    # отправляем письмо с помощью программы mail(1)
>    ...
>    exit 1
>fi


Спасибо огромное! Вот что у меня получилось:
PID="`ps -A|grep ontape`"
if [ -n "$PID" ]; then
   echo "ontape уже запущен. Backup не запущен." > $tmp     # ontape запущен
  /usr/bin/mail -s 'Warning! Backup!' $addrs1 < $tmp     # отправляем письмо mail(1)
    exit 1
fi
Я Вам очень благодарен за помощь!


"помогите, пожалуйста!"
Отправлено dronord , 05-Апр-07 14:02 
PID="`ps -A|grep ontape`"
if [ -n "$PID" ]; then ...

Неправильно! Вы можете потерять бэкап.
Команда "ps -A|grep ontape" может найти "grep ontape" и тогда ваше условие тоже будет верно, но ведь это не так?

Если ontape работает в одном экземпляре либо неважно количество - используйте pidof!

Если их несколько, они выполняют разные задачи, а Вам нужен конкретный процесс с конкретными параметрами запуска, нужно вручную разбирать вывод "ps -A|grep ontape". Либо окружить запуск ontape скриптом, который создаст файл-флаг и уже Ваш скрипт будет проверять этот флаг.


"помогите, пожалуйста!"
Отправлено leou , 05-Апр-07 14:15 
>PID="`ps -A|grep ontape`"
>if [ -n "$PID" ]; then ...
>
>Неправильно! Вы можете потерять бэкап.
>Команда "ps -A|grep ontape" может найти "grep ontape" и тогда ваше условие
>тоже будет верно, но ведь это не так?
>
>Если ontape работает в одном экземпляре либо неважно количество - используйте pidof!
>
>
>Если их несколько, они выполняют разные задачи, а Вам нужен конкретный процесс
>с конкретными параметрами запуска, нужно вручную разбирать вывод "ps -A|grep ontape".
>Либо окружить запуск ontape скриптом, который создаст файл-флаг и уже Ваш
>скрипт будет проверять этот флаг.


Насколько я знаю "grep ontape" находит команда ps -Af|grep ontape.


"помогите, пожалуйста!"
Отправлено dronord , 05-Апр-07 15:05 
>Насколько я знаю "grep ontape" находит команда ps -Af|grep ontape.

"А"-то я и не заметил.
Тогда решение верное, если Вас не интересуют параметры запуска ontape.