LINUX.ORG.RU

perl: как узнать из самой проги, запущена ли она уже


0

0

Как можно из самого скрипта на perl узнать, запущена ли уже копия программы или нет?

Если я через ps -ax пытаюсь это сделать, то как минимум одна копия (та, которая и осуществляет проверку) в памяти уже есть, поэтому написать простое правила вида

if (`ps -ax | grep programm | greep -v 'grep programm'`) { print "programm allready running" }

не получится - правило срабатывает всегда. Может как нибудь можно посчитать количество строк, выдаваемых по ps -ax ? Если их >=2, значит в памяти сидят минимум две копии программы.

Как это сделать?

anonymous

хехе

ну так ты сделай так чтообы она искала две строки а не одну :))) я в перле не очень, но по-моему так сделать можно :))

gr_buza ★★★★
()

if
sudo killall -0 "прога" 2> /dev/null;
then
/usr/bin/nice -n 19 /тут/путь/прога >& /dev/null &
else
echo "нету её" > /dev/null
fi
--
ключевое -- killall -0

anonymous
()

ps ax | grep прога | grep -v grep | tail -n 1

anonymous
()
Ответ на: комментарий от anonymous

Всем спасибо.

Вот тот вариант, что я сделал для себя

if (`ps -ax | grep prog | grep -v "grep prog" | wc -l` > 1)
{
print "another copy of prog running";
return 1;
}

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