The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"скрипт для проверки запущенных процессов(не работает)"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"скрипт для проверки запущенных процессов(не работает)"  +/
Сообщение от Alinak email(ok) on 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.

т.е. скрипт как бы дважды отрабатывает в одно и тоже время. В чем причина такого его поведения?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "скрипт для проверки запущенных процессов(не работает)"  +/
Сообщение от pavlinux (ok) on 22-Дек-12, 22:51 
> В чем причина такого его поведения?

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "скрипт для проверки запущенных процессов(не работает)"  +/
Сообщение от скрипт для проверки запущенных процессовне работает on 23-Дек-12, 12:46 
>[оверквотинг удален]
> [ -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? Такого же быть не должно, либо то, либо то, а у меня все сразу :(

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

6. "скрипт для проверки запущенных процессов(не работает)"  +/
Сообщение от pavlinux (ok) on 24-Дек-12, 07:31 
> Да, но почему ...

"скрипт запускается из крона каждые 4 минуты.
Основная часть скрипта должна работать минут 20"

Слово "должна" не используется в программировании! (Microsoft не считается).

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "скрипт для проверки запущенных процессов(не работает)"  +/
Сообщение от Andrey Mitrofanov on 23-Дек-12, 13:11 
> т.е. скрипт как бы дважды отрабатывает в одно и тоже время. В
> чем причина такого его поведения?

Два раза в крон прописал?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "скрипт для проверки запущенных процессов(не работает)"  +/
Сообщение от AV (??) on 23-Дек-12, 20:15 
Ты пробовал ли что типа такого:

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 '$?'"

И всё увидишь.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "скрипт для проверки запущенных процессов(не работает)"  +/
Сообщение от AV (??) on 23-Дек-12, 20:16 
У меня опечатка.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "скрипт для проверки запущенных процессов(не работает)"  +/
Сообщение от скрипт для проверки запущенных процессовне работает on 26-Дек-12, 16:28 
> У меня опечатка.

проблема решена, спасибо всем кто откликнулся!

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру