LINUX.ORG.RU
ФорумAdmin

Помогите со скриптом (BASH)


0

0

Господа, помогите, плиз, с написанием скрипта на BASH. Суть такая - почему-то периодически падает поисковый демон от ASPSeek и вот хочу накропать скриптец, который бы его проверял по cron'у и "перепинывал" по необходимости. Начал так:

#!/bin/bash
pid=`ps ax|grep "searchd"|awk '{print $1}'`
далее хотел проверить:
if [ -z $pid ]; then
/usr/local/aspseek/sbin/searchd -D -R
fi
но фишка в том, что grep "searchd" как минимум находит саму себя ... Т.е. условие if [ -z ... не канает. Кто подскажет, как надо сделать правильно ? Или через какой фильтр прогнать еще, чтобы он первую строчку отрезал ? Тогда if [ -z ...] сработает ... :-)

grep searchd | grep -v grep | awk'{print $1}'

Obidos ★★★★★
()

добавь между grep и awk еще и "grep -v grep"

sasha999 ★★★★
()

Черт возьми, теперь получается вот что:
#!/bin/bash
pid=`ps ax|grep searchd|grep -v grep|awk '{print $1}'`
if [ -z $pid ]; then
/usr/local/aspseek/sbin/searchd -D -R
fi
но теперь if ругается: либо ./searchd.test: [: 7598: binary operator expected при отсутствии процессов searchd в памяти, либо too many arguments при наличии ...
Че-т я совсем ничего не понимаю. Почему так, ведь в мануале сказано что -z string True if the length of string is zero ...

Anton_Khalikov
() автор топика

Нужно так:

if [ -z pid ]; # и т.д., т.е. не разыменовывать здесь переменную.

Obidos ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.