Я начинающий сисадмин. Опыта еще не хватает. Получил такое задание: есть скрипт бэкапа, в который надо вставить проверку на запуск процесса ontape. если ontape запущен, то на почту должно отправляться письмо (типа "Бэкап не запущен") и бэкап соответственно не запускаться. если ontape не запущен, то должен запускаться бэкап. Помогите, пожалуйста! Заранее благодарен!
>Я начинающий сисадмин. Опыта еще не хватает. Получил такое задание: есть скрипт
>бэкапа, в который надо вставить проверку на запуск процесса ontape. если
>ontape запущен, то на почту должно отправляться письмо (типа "Бэкап не
>запущен") и бэкап соответственно не запускаться. если ontape не запущен, то
>должен запускаться бэкап. Помогите, пожалуйста! Заранее благодарен!А как вам собственно помочь-то? За вас написать? Ну давайте, попробую сходу прикинуть, а уж дотачивать до работоспособного состояния сами будете?
PID="`pidof ontape`" # можно юзать pgrep или парсить вывод ps
if [ -z "$PID" ]; then
# ontape запущен
# отправляем письмо с помощью программы mail(1)
...
exit 1
fi
>>Я начинающий сисадмин. Опыта еще не хватает. Получил такое задание: есть скрипт
>>бэкапа, в который надо вставить проверку на запуск процесса 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
Я Вам очень благодарен за помощь!
PID="`ps -A|grep ontape`"
if [ -n "$PID" ]; then ...Неправильно! Вы можете потерять бэкап.
Команда "ps -A|grep ontape" может найти "grep ontape" и тогда ваше условие тоже будет верно, но ведь это не так?Если ontape работает в одном экземпляре либо неважно количество - используйте pidof!
Если их несколько, они выполняют разные задачи, а Вам нужен конкретный процесс с конкретными параметрами запуска, нужно вручную разбирать вывод "ps -A|grep ontape". Либо окружить запуск ontape скриптом, который создаст файл-флаг и уже Ваш скрипт будет проверять этот флаг.
>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.
>Насколько я знаю "grep ontape" находит команда ps -Af|grep ontape."А"-то я и не заметил.
Тогда решение верное, если Вас не интересуют параметры запуска ontape.