PDA

Показать полную графическую версию : Скрпт считающий файлы (lsof)


Endy1
30-08-2010, 18:04
Ребята, помогите написать пару строк. Наверняка, тут ничего сложного нет. Но когда не умеешь - всё сложно. :)

Нужен скриптик, который проверял бы количество открытых Tomcatом файлов, и если это число превышает 1000 делал бы tomcat restart.
Я себе представляю что-то вроде этого:


#!/bin/bash

grep=/bin/grep
wc=/usr/bin/wc
list=/usr/bin/lsof

arv=$list | $grep "tomcat" | $wc -l

if [ $arv >=1000 ]; then
/etc/init.d/tomcat6 stop
sleep 5
/etc/init.d/tomcat6 start
echo "Делаю рестар томкат. Количество открытых файлов:" $arv
fi



И вот умудрился запутаться в 2х строчках кода. Никак он не хочет сохранять в переменной вывод lsof.
Помогите, please!

Endy1
31-08-2010, 17:14
Совсем никаких мыслей?

Kent
31-08-2010, 22:52
$(list | $grep "tomcat" | $wc -l)
Перед 1000 нужен пробел. И, вроде, >= нет такого сравнения.

Endy1
01-09-2010, 10:40
С пробелом, увы, то же самое.

>= в справочник нашёл, что это "больше или равно".

По-моему проблема в этой строке: $list | $grep "tomcat" | $wc -l

Я упростил скрипт, чтобы проверить будет ли выполняться условие

#!/bin/bash

wc=/usr/bin/wc
list=/usr/bin/lsof

file=$list -p 5792 | $wc -l
if [[ $file > 500 ]]; then
echo "OK"
fi


Почему-то условие выполняется в любом случае, не зависимо от реального значения $file.
И появилась ошибка
./tom: line 12: -p: command not found

Кажется, что ошибка в синтаксисе. А где - не могу понять...

Kent
01-09-2010, 11:36
Обратите внимание на скобки, которые я добавил.

>= в справочник нашёл, что это "больше или равно" »
man test

Endy1
01-09-2010, 11:41
Ага, нашёл, что больше или равно -ge

Со скобками сейчас попробую.

Kent
03-09-2010, 00:09
В тему:
http://ironman.darthgibus.net/?p=89




© OSzone.net 2001-2012