Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Прверка наличия процесса посредством bash скрипта

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
vvt



Зарегистрирован: 20.05.2004
Сообщения: 686

СообщениеДобавлено: Ср Авг 10 2005 09:21    Заголовок сообщения: Прверка наличия процесса посредством bash скрипта Ответить с цитатой

Мне нужно проверить есть ли процесс в памяти посредством скрипта. Процесс при старте записывает свой id в файлик (к примеру /tmp/proc.id)
Хотел так:
Цитата:
#!/bin/bash
if [ ps --pid $(cat /tmp/proc.id) ] ; then
..
fi

Bash мне выдает (line 17 -- это как раз строчка с if, test.sh тот самый скрипт ):
Цитата:
./test.sh: line 17: [: --pid: binary operator expected

Как быть?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vvt



Зарегистрирован: 20.05.2004
Сообщения: 686

СообщениеДобавлено: Ср Авг 10 2005 12:02    Заголовок сообщения: Ответить с цитатой

Ну, сама команда
Цитата:
ps --pid $(cat /tmp/proc.id)
работает нормально. Весть вопрос в том, как заставить ее возвращать if'у true, если процесс есть и false, если его нет.
Либо как то по другому реализовать ветвление...

(Смысл в том, что при старте эта чертова прога не только создает файл со своим id, но и проверяет его наличие, и если он есть, она отказывается стартовать. Мне нужно в ее стартовом скрипте проверить есть ли эти файлики, потом проверить, не запущена ли уже программа и если нет, потереть их к чертовой матери до вызова демона программы. Вот.)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vvt



Зарегистрирован: 20.05.2004
Сообщения: 686

СообщениеДобавлено: Ср Авг 10 2005 13:26    Заголовок сообщения: Ответить с цитатой

Большой пасиб, работает Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
eugrus



Зарегистрирован: 18.05.2005
Сообщения: 25

СообщениеДобавлено: Чт Авг 18 2005 22:45    Заголовок сообщения: Ответить с цитатой

Sorry, но разве не проще сделать
Код:
ps -A |grep process
Question
_________________
http://eugrus.pp.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
eugrus



Зарегистрирован: 18.05.2005
Сообщения: 25

СообщениеДобавлено: Пт Авг 19 2005 09:32    Заголовок сообщения: Ответить с цитатой

FFF писал(а):
eugrus писал(а):
Sorry, но разве не проще сделать
Код:
ps -A |grep process
Question


все все зависит от ситуации...
автору данной темы надо выполнять такую проверку в скрипте. и у него есть номер процесса, наличие которго проверяется. В такой ситуации Ваш вариант

ps -A | grep process

ему не поможет, IMHO. Хотя для другой ситуации эта же команда окажется очень полезной. Правда, в FreeBSD 4.5 я не обраужил ключа A у команды ps -- есть ключ a. Но не исключаю, что в других вариантах unix'а есть и ключ A.


В Linux ключ -A используется для вывода полного списка процессов

Ну есть номер, и что? grep'у с таким же успехом можно подставить номер и проверить наличие строки в выводе ps (читай наличие процесса) по PID
_________________
http://eugrus.pp.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
vvt



Зарегистрирован: 20.05.2004
Сообщения: 686

СообщениеДобавлено: Пт Авг 19 2005 10:17    Заголовок сообщения: Ответить с цитатой

У меня вся проблема заключалась в том, чтобы заставить ps -<не суть что> выдавать true или false для условия if.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dio



Зарегистрирован: 07.10.2004
Сообщения: 722
Откуда: Дважды орденоносная Кубань,Краснодар

СообщениеДобавлено: Вт Авг 23 2005 16:28    Заголовок сообщения: Ответить с цитатой

vvt писал(а):
Большой пасиб, работает Smile

Конечно работает, только без опечатки, что здесь....мелочь конечно, но неприятно, вдруг кто вслепую начнет пользовать этот скрипт Cool
lin_n=`ps $(cat /var/run/sywwslog.pid) | wc -l`
извините, что влез.
_________________
All is not lost! Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
vvt



Зарегистрирован: 20.05.2004
Сообщения: 686

СообщениеДобавлено: Ср Авг 24 2005 13:22    Заголовок сообщения: Ответить с цитатой

Не уловил где опечатка...
У меня работает так (копипастил, только заменил названия файлов с пидом процесса):
Цитата:
proc_ln=`ps --pid $(cat /var/run/proc.pid) | wc -l`
echo "Checking the process existence as described in /var/run/proc.pid"
if [ ${proc_ln} = "2" ] ; then
echo "Process exists! Everything's in order"
elif [ ${proc_ln} = "1" ] ; then
echo "Bare PID file found! Now removing proc.pid.."
rm /var/run/proc.pid
echo "...done"
fi
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...