Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как определить запущен shell скрипт или нет? / 13 сообщений из 13, страница 1 из 1
23.01.2007, 13:45:57
    #34275140
Braboos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
Добрый день!

Задача заключается в следующем:

Необходимо в shell скрипте, перед выполнением основного кода, осуществить проверку, того, что данный скрипт на сервере запущен в одном экземпляре (из которого и осуществляется проверка).

Если да (т.е. один он)- то продолжить выполнение, если нет - то остановить выполнение.
...
Рейтинг: 0 / 0
23.01.2007, 13:50:06
    #34275156
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
например, флаговый файл.
При старте скрипта создавать, а при окончании скрипта и перезагрузке машины удалять.
...
Рейтинг: 0 / 0
23.01.2007, 13:59:47
    #34275190
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
miksoftнапример, флаговый файл.
При старте скрипта создавать, а при окончании скрипта и перезагрузке машины удалять.в файл надо класть pid, и ps|grep проверять есть такой процесс или нет.
...
Рейтинг: 0 / 0
23.01.2007, 14:03:40
    #34275211
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
Журавлев Денис miksoftнапример, флаговый файл.
При старте скрипта создавать, а при окончании скрипта и перезагрузке машины удалять.в файл надо класть pid, и ps|grep проверять есть такой процесс или нет.Если скрипт должен выполняться в каждый момент времени строго в одном экземпляре , то в этом нет необходимости.
...
Рейтинг: 0 / 0
23.01.2007, 14:11:29
    #34275263
Braboos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
С файлом не совсем надежно. Его может кто нибудь случайно удалить.

pidno=$(ps -aef | grep ${psname})

В pidno сливается вся информация о процессах с именем psname.
И теперь надо, просто грамотно подсчитать количество вхождений ${psname}.

Если вхождений больше 1 значит запущен уже процесс и наоборот.

А как правильно подсчитать количество вхождений?
...
Рейтинг: 0 / 0
23.01.2007, 14:35:14
    #34275387
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
BraboosС файлом не совсем надежно. Его может кто нибудь случайно удалить.Для этого существуют всякие права, группы, пользователи и т.п.
...
Рейтинг: 0 / 0
23.01.2007, 14:56:38
    #34275511
fandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
BraboosС файлом не совсем надежно. Его может кто нибудь случайно удалить.

pidno=$(ps -aef | grep ${psname})

В pidno сливается вся информация о процессах с именем psname.
И теперь надо, просто грамотно подсчитать количество вхождений ${psname}.

Если вхождений больше 1 значит запущен уже процесс и наоборот.

А как правильно подсчитать количество вхождений?


# ps -ef | grep $psname | wc


дальше что делать сам придумай...
...
Рейтинг: 0 / 0
23.01.2007, 15:15:09
    #34275597
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
тогда уж:
ps -ef|grep $psname|grep -v grep|wc -l
...
Рейтинг: 0 / 0
23.01.2007, 15:36:45
    #34275723
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
тоже не супернадежно. Кто мешает сделать шельник с таким же именем и запустить :)
...
Рейтинг: 0 / 0
23.01.2007, 16:17:59
    #34275928
nik2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
яб таки проверял и лок файл и пид...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
touch .lock
lock=`cat .lock`
if [ "x$lock" != 'x' ]; then
    #
    # жив ли тот процесс который в том локе описан
    #
    SELF= 0 
    ps -p $lock -o cmd | grep $ 0  &> /dev/null && SELF= 1 
    if [ $SELF -eq  1  ]; then
        echo "типа я уже работаю..."
        exit
    fi
fi
echo $$ > .lock
#
#....
#
rm -f .lock

хотя атомарности здесь явно нет...

вообще есть `man lockfile`, но если тот лок вовремя не удалить тоже ничего хорошего не получится...
...
Рейтинг: 0 / 0
23.01.2007, 17:08:21
    #34276131
Braboos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
Всем огромное спасибо!

Cделал так:

pidno=`ps -aef | grep ${psname} | wc -l`

а дальше уже обработаю $pidno.

Спасибо.
...
Рейтинг: 0 / 0
24.01.2007, 07:34:54
    #34277067
Alex Roudnev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
Журавлев Денис miksoftнапример, флаговый файл.
При старте скрипта создавать, а при окончании скрипта и перезагрузке машины удалять.в файл надо класть pid, и ps|grep проверять есть такой процесс или нет.

Не по ps|grep, а по kill -0 $pid - если процесс есть, то ответ даст 0, а если нет, то ошибку (не ноль).
...
Рейтинг: 0 / 0
24.01.2007, 11:28:33
    #34277854
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить запущен shell скрипт или нет?
Alex RoudnevНе по ps|grep, а по kill -0 $pid - если процесс есть, то ответ даст 0, а если нет, то ошибку (не ноль).Да, точно.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как определить запущен shell скрипт или нет? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]