Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: sys7em в Aug 08, 2005, 21:55



Титла: bash script за праверяване на процес
Публикувано от: sys7em в Aug 08, 2005, 21:55
Трябва ми някъв супер елементарен баш скрипт, който да проверява за някъв процес и ако го няма процеса да прави нещо
примеврно
ps -e | grep named ...  и ако няма named стартиран да прави нещо

помогнете


Титла: bash script за праверяване на процес
Публикувано от: в Aug 08, 2005, 22:23
test -z "`ps ax | grep named | grep -v 'grep named'`" && logger -s -t daemon_check -p daemon.warn 'named is not running'

Бел.: командата е на един ред.


Титла: bash script за праверяване на процес
Публикувано от: в Aug 08, 2005, 22:36
и като скрипт:
Примерен код
#!/bin/sh

N=$1
test -z "`ps ax | grep $N | grep -v \"$0\" | grep -v grep`" && logger -s -t daemon_check -p daemon.warn "$N is not running"


Титла: bash script за праверяване на процес
Публикувано от: sys7em в Aug 08, 2005, 23:02
./run_proc.sh
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
daemon_check:  is not running

е това ми дава


Титла: bash script за праверяване на процес
Публикувано от: Hapkoc в Aug 09, 2005, 10:11
Ми пусни го с някакъв параметър - кой процес искаш да търси.

Принципно е по-коректно така:

--------------------------------
#!/bin/sh

N=$1

if [ -z "$N" ]; then
    echo "usage: $0 <pattern>"
    exit 1
fi

test -z "`ps ax | grep $N | grep -v \"$0\" | grep -v grep`" && logger -s -t daemon_check -p daemon.warn "$N is not running"
--------------------------------

А сега като се присетих да питам едно нещо - гледам по разни скриптове, че проверката за празен низ я правят така:

if [ "x$VAR" == "x" ]; then
    ...
fi

С каква цел се прави това, не е ли същото като горното (с -z)?


Титла: bash script за праверяване на процес
Публикувано от: в Aug 09, 2005, 12:43
за [ blabla ] виж например BASH CONDITIONAL EXPRESSIONS.
[ blabla ] става test blabla, като test може да е вградена команда в командния интерпретатор, като bash, иначе си я има и като програма, например /usr/bin/test . Не съм сигурен, че [ израз ] върви на всички командни интерпретатори, докато за test програмата не знам UNIX без нея - дефинирана е в POSIX. Мисля, че влиза и в posix командите за ОС с NT ядро.



П.П.: и нали скрипта трябваше да е прост. да не искаш и проверка за валидност на аргументите и да извежда usage и help да има :-) .... и естествено е без капка коментар :)


Титла: bash script за праверяване на процес
Публикувано от: Hapkoc в Aug 09, 2005, 13:23
@rpetrov: не разбрах отговора ти към кого е насочен. :)

Ако към мен, въпроса ми беше не толкова за [] и test (макар, че определено и това ми беше от полза), колкото за израза: "x$VAR" == "x".

Поздрави :)


Титла: bash script за праверяване на процес
Публикувано от: в Aug 09, 2005, 15:37
отговора накъп за всички :-) за да не пиша много

test "x$VAR" = "x"
става, но с едно =, с две == не е портируемо

сравни test от bash
Примерен код
$ test "x" == "x" && echo EQ

и с програмата
Примерен код
$ /usr/bin/test "x" == "x" && echo EQ
/usr/bin/test: ==: binary operator expected


Титла: bash script за праверяване на процес
Публикувано от: в Aug 09, 2005, 15:39
накЪп ;-) кой като иска да чете