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

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

anonymous
()

$ 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 ★★★★★
()
Ответ на: комментарий от KRoN73

Как оказалось, в случае vixie-cron достаточно иметь "*" (или А-Б/С) в первом поле crontab-а.

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