Russian Qt Forum
Июля 02, 2025, 04:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Cron и вложенный запуск заданий  (Прочитано 5917 раз)
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]   Вверх
  Печать  
 
Перейти в:  


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