Russian Qt Forum
Ноябрь 23, 2024, 00:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Cron и вложенный запуск заданий  (Прочитано 5687 раз)
alex12
Гость
« : Июнь 22, 2009, 15:42 »

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

Вполне возможна ситуация, когда следующий запуск cron делает раньше,
чем программа завершит свое выполнение. Возникает вложенный запуск.

Есть ли элегантный способ защиты от такой ситуации? Может есть стандартное решение?
« Последнее редактирование: Июнь 22, 2009, 21:05 от alex12 » Записан
MoPDoBoPoT
Гость
« Ответ #1 : Июнь 22, 2009, 15:56 »

Вот вам в помощь:
http://www.qtsoftware.com/products/appdev/add-on-products/catalog/3/Utilities/qtsingleapplication
Записан
alex12
Гость
« Ответ #2 : Июнь 22, 2009, 21:04 »

Спасибо, к сожалению не пойдет. Я неудачно поставил задачу: у меня не просто программа, а небольшой скрипт из нескольких консольных команд.
« Последнее редактирование: Июнь 22, 2009, 21:06 от alex12 » Записан
denka
Гость
« Ответ #3 : Июнь 22, 2009, 21:32 »

Почему бы в самом скрипте не анализировать выполняется ли на данный момент твой скрип запущенный прошлый раз?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Июнь 22, 2009, 22:09 »

den'ka, согласен.
Мало того можно посмотреть в качестве примера скрипты загрузки системы.
Там запуск идёт поочерёдно, пока один демон не запустится зависимые от него ждут.

Помоему это делается через экспорт переменных. Т.е. В данном случае можно проверять существует ли некая переменная, если да, то не выполнять работу. Если не существет, то экспортировать переменную и выполнить работу.

Примерно так.
Записан

Юра.
Kagami
Гость
« Ответ #5 : Июнь 22, 2009, 23:30 »

Можно делать lock-файл.

Код
Bash
#!/bin/sh
if [ -f /tmp/.my-lock ]
 then
   exit 0
fi
touch /tmp/.my-lock
 
# Выполняем скрипт
# ...
 
rm /tmp/.my-lock
 
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Июнь 23, 2009, 00:19 »

man lockfile, или ручной lock, как выше показали. и неплохо бы trap отрабатывать.
« Последнее редактирование: Июнь 23, 2009, 00:21 от AX » Записан
alex12
Гость
« Ответ #7 : Июнь 23, 2009, 08:15 »

Спасибо за советы. Буду разбираться.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.119 секунд. Запросов: 22.