Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 Заголовок сообщения: |
|
|
Большой пасиб, работает |
|
Вернуться к началу |
|
|
eugrus
Зарегистрирован: 18.05.2005 Сообщения: 25
|
Добавлено: Чт Авг 18 2005 22:45 Заголовок сообщения: |
|
|
Sorry, но разве не проще сделать _________________ http://eugrus.pp.ru |
|
Вернуться к началу |
|
|
eugrus
Зарегистрирован: 18.05.2005 Сообщения: 25
|
Добавлено: Пт Авг 19 2005 09:32 Заголовок сообщения: |
|
|
FFF писал(а): | eugrus писал(а): | Sorry, но разве не проще сделать |
все все зависит от ситуации...
автору данной темы надо выполнять такую проверку в скрипте. и у него есть номер процесса, наличие которго проверяется. В такой ситуации Ваш вариант
ps -A | grep process
ему не поможет, IMHO. Хотя для другой ситуации эта же команда окажется очень полезной. Правда, в FreeBSD 4.5 я не обраужил ключа A у команды ps -- есть ключ a. Но не исключаю, что в других вариантах unix'а есть и ключ A. |
В Linux ключ -A используется для вывода полного списка процессов
Ну есть номер, и что? grep'у с таким же успехом можно подставить номер и проверить наличие строки в выводе ps (читай наличие процесса) по PID _________________ http://eugrus.pp.ru |
|
Вернуться к началу |
|
|
vvt
Зарегистрирован: 20.05.2004 Сообщения: 686
|
Добавлено: Пт Авг 19 2005 10:17 Заголовок сообщения: |
|
|
У меня вся проблема заключалась в том, чтобы заставить ps -<не суть что> выдавать true или false для условия if. |
|
Вернуться к началу |
|
|
dio
Зарегистрирован: 07.10.2004 Сообщения: 722 Откуда: Дважды орденоносная Кубань,Краснодар
|
Добавлено: Вт Авг 23 2005 16:28 Заголовок сообщения: |
|
|
vvt писал(а): | Большой пасиб, работает |
Конечно работает, только без опечатки, что здесь....мелочь конечно, но неприятно, вдруг кто вслепую начнет пользовать этот скрипт
lin_n=`ps $(cat /var/run/sywwslog.pid) | wc -l`
извините, что влез. _________________ All is not lost! |
|
Вернуться к началу |
|
|
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 |
|
|
Вернуться к началу |
|
|
|