Как сделать, завершение bash скрипта, если другая программа уже запущена?

Есть 2 bash файла, первый запускается планировщиком на событие, и имеет код:

#!/bin/bash
#
# Проверяем запущен ли уже скрипт, если да, то выход
[ `pgrep -c optimize.sh` -gt 1 ] && echo "Программа уже запущена" >> /var/www/oo.log  && exit 1
# Если не запущен - запускаем
/var/www/optimize.sh


Первый скрипт должен запускать второй скрипт, если тот не запущен. Как завершить первый скрипт, если второй скрипт уже работает?
  • Вопрос задан
  • 1387 просмотров
Решения вопроса 1
Tolly
@Tolly Автор вопроса
Вопрос закрываю, проблема была в том, что второй скрипт запускался последовательно, и пока он не выполнился, других действий не происходило, поэтому exit и не срабатывал, по той же причине в логах не было не одно "Passed.."

Решение такое: запуск скрипта не последовательно, а в фоновом режиме, тогда управление передается следующей команде, и делай что "хошь"..

Скрипт надо было запускать как: optimize.sh &
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@UPSA
anykey. Я не программист, я просто ленивый.
А что не пользуетесь ps?

if ps aux | grep optimize.sh ; then echo "ЗАПУЩЕННО !!!" ; fi

тк как не профи могут быть ошибуи в синтаксе )))
Ответ написан
planc
@planc
1.sh:

#!/bin/bash

if PID=`pgrep -x "myproc.sh"`
then
    echo "уже запущен $PID"
else
    echo "запускаю"
    ./myproc.sh &
fi


myproc.sh:
#!/bin/bash

echo "запускаю процесс $$"
sleep 10
echo "завершился процесс $$"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы