LINUX.ORG.RU

[bash] проверка запущености скрипта им самим


0

0

#! /bin/sh

function xyz {
while [ 1 ]
do
echo test
sleep 10
done
}

function test {
a=`ps -e | grep test.sh`

if [[ $a =~ 'test.sh' ]]; then
echo "All ok"
else
~/test.sh
fi
}

if [ "$1" = "-test" ]; then
test
elif [ "$1" = "" ]; then
xyz
fi

Скрипт выполняет действие раз в 10 секунд. Задумывалось так, что бы крон проверял (test.sh -test), запущен ли скрипт и если не запущен, то пускал.

Почему то при запуске скрипта ./test.sh -test выдает "All ok", хотя в процессах test.sh не висит. Если же запустить sh test.sh или bash test.sh, то все работает как надо. С чем это связано и как победить?

anonymous

Re: [bash] проверка запущености скрипта им самим

Это все серьезно или в дурке день открытых дверей?

sdio ★★★★★ ()

Re: [bash] проверка запущености скрипта им самим

man pgrep.

В случае cron у меня так:

if [[ "`pgrep -f /usr/local/bin/cron/10m|wc -l`." != "2." ]]; then exit; fi

KRoN73 ★★★★★ ()

Re: [bash] проверка запущености скрипта им самим

Еще вопросец, как вместо ok вставить выход из скрипта. exit 0 или kill $$ не помогают.

anonymous ()

Re: [bash] проверка запущености скрипта им самим

$ cat test_one.sh

#!/bin/sh

[ `pgrep -c test_one.sh` -gt 1 ] && echo "no way" && exit 1

echo "First start"
sleep 600
#-----------------------------------------------------------------

$ ./test_one.sh &
First start

$ ./test_one.sh 
no way
$ ./test_one.sh 
no way

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