скрипт для проверки запущенных процессов(не работает), Alinak, 22-Дек-12, 21:14 [смотреть все]Добрый день. Есть кусок скрипта, выглядит вот так: #!/bin/bash PID_FILE=pid.txt MY_PID=$$ cnt=1 if [ -f $PID_FILE ] && kill -0 `cat $PID_FILE` && ps -p `cat $PID_FILE` -o cmd | grep `basename $0`>/dev/null then date >> temp.log echo 'The script already running. Exiting.' >> temp.log exit 2 else echo $$ >$PID_FILE date >> temp.log echo 'no running script fuond.' >> temp.log; fi ....#основная часть скрипта скрипт запускается из крона каждые 4 минуты. Основная часть скрипта должна работать минут 20, т.е. в temp.log должно быть одно сообщение no running script fuond. и затем как минимум три сообщения The script already running. Exiting. но на самом деле в логе совершенно другое, а именно: Sat Dec 22 12:08:01 EST 2012 no running script fuond. Sat Dec 22 12:08:01 EST 2012 The script already running. Exiting. Sat Dec 22 12:12:01 EST 2012 no running script fuond. Sat Dec 22 12:12:01 EST 2012 The script already running. Exiting. т.е. скрипт как бы дважды отрабатывает в одно и тоже время. В чем причина такого его поведения?
|
- скрипт для проверки запущенных процессов(не работает), pavlinux, 22:51 , 22-Дек-12 (1)
> В чем причина такого его поведения?then выполняется только, если [ -f $PID_FILE ] == ИСТИНА kill -0 `cat $PID_FILE` == ИСТИНА ps -p `cat $PID_FILE` -o cmd == ИСТИНА grep `basename $0`>/dev/null == ИСТИНА и [ -f $PID_FILE ] == ИСТИНА kill -0 `cat $PID_FILE` == ИСТИНА ps -p `cat $PID_FILE` -o cmd == ЛОЖ grep `basename $0`>/dev/null == ИСТИНА В остальных случаях выполнится else
- скрипт для проверки запущенных процессов(не работает), скрипт для проверки запущенных процессовне работает, 12:46 , 23-Дек-12 (2)
>[оверквотинг удален] > [ -f $PID_FILE ] == ИСТИНА > kill -0 `cat $PID_FILE` == ИСТИНА > ps -p `cat $PID_FILE` -o cmd == ИСТИНА > grep `basename $0`>/dev/null == ИСТИНА > и > [ -f $PID_FILE ] == ИСТИНА > kill -0 `cat $PID_FILE` == ИСТИНА > ps -p `cat $PID_FILE` -o cmd == ЛОЖ > grep `basename $0`>/dev/null == ИСТИНА > В остальных случаях выполнится else Да, но почему за один запуск выполняется и then и else? Такого же быть не должно, либо то, либо то, а у меня все сразу :(
- скрипт для проверки запущенных процессов(не работает), pavlinux, 07:31 , 24-Дек-12 (6)
> Да, но почему ..."скрипт запускается из крона каждые 4 минуты. Основная часть скрипта должна работать минут 20" Слово "должна" не используется в программировании! (Microsoft не считается).
- скрипт для проверки запущенных процессов(не работает), Andrey Mitrofanov, 13:11 , 23-Дек-12 (3)
> т.е. скрипт как бы дважды отрабатывает в одно и тоже время. В > чем причина такого его поведения?Два раза в крон прописал?
- скрипт для проверки запущенных процессов(не работает), AV, 20:15 , 23-Дек-12 (4)
Ты пробовал ли что типа такого:
echo "PID_FILE '$PID_FILE'" >&2 echo "PID_FILE content '$(cat $PID_FILE)'" >&2 echo "ps '$(ps -p `cat $PID_FILE` -o cmd)'" >&2 echo "basename '$(basename $0)'" >&2[ -f $PID_FILE ] echo "test exit code '$?'" kill -0 `cat $PID_FILE` \ echo "kill exit code '$?'" ps -p `cat $PID_FILE` -o cmd | grep `basename $0` >/dev/null echo "process list exit code '$?'"
И всё увидишь.
|