powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как определить запущен shell скрипт или нет?
13 сообщений из 13, страница 1 из 1
Как определить запущен shell скрипт или нет?
    #34275140
Braboos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

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

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

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

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

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

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

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

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

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

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

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


# ps -ef | grep $psname | wc


дальше что делать сам придумай...
...
Рейтинг: 0 / 0
Как определить запущен shell скрипт или нет?
    #34275597
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда уж:
ps -ef|grep $psname|grep -v grep|wc -l
...
Рейтинг: 0 / 0
Как определить запущен shell скрипт или нет?
    #34275723
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже не супернадежно. Кто мешает сделать шельник с таким же именем и запустить :)
...
Рейтинг: 0 / 0
Как определить запущен shell скрипт или нет?
    #34275928
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
яб таки проверял и лок файл и пид...
Код: 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
Как определить запущен shell скрипт или нет?
    #34276131
Braboos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромное спасибо!

Cделал так:

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

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

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

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


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