|   |   | 
| 
 | Проверка запущенности процедуры | ☑ | ||
|---|---|---|---|---|
| 0
    
        Злобная Печенька 23.10.14✎ 12:09 | 
        Всем привет. ТОваг'ищи, нужен совет бывалых. Есть процедура на оракл, есть sh в кроне, который каждые 5 минут эту процедуру пинает. СЕйчас колдую над проверкой запущенности процедуры и пока не понимаю, как это реализовать. Что проще реализуемо и лучше по производительности- дописать процедуру, на проверку запущенности самой себя, или дописать sh-ник, чтобы проверял запущенность своей копии?     | |||
| 1
    
        Злобная Печенька 23.10.14✎ 12:16 | 
        Реализовать все это джобом нет возможности, так как в .sh проверяется, запущен ли клиент. и если клиент не запущен, процедура не исполняется.     | |||
| 2
    
        kokamoonga 23.10.14✎ 14:19 | 
        (0) а не судьба какой-нибудь флаг передергивать при запуске/завершении? Писать его куда угодно, хоть просто в файл     | |||
| 3
    
        Looser-1c 23.10.14✎ 14:20 | 
        (2) Файл плохо...
 (0) Лучше в процедуре это делай. | |||
| 4
    
        kokamoonga 23.10.14✎ 14:22 | 
        (3) >>> Файл плохо... 
 Тут наверно и какие-то аргументы будут? | |||
| 5
    
        France 23.10.14✎ 14:22 | 
        семафор... при первом входе в истину.     | |||
| 6
    
        Kalambur 23.10.14✎ 14:22 | 
        (0)+(1) ну тут же все очевидно что нужно "дописать sh-ник"     | |||
| 7
    
        Looser-1c 23.10.14✎ 14:24 | 
        (4) Ага. Скрипт в корку вылетит, а файл останется     | |||
| 8
    
        kokamoonga 23.10.14✎ 14:28 | 
        (7) И как предполагается внешний контроль в сочетании с "Лучше в процедуре это делай."?     | |||
| 9
    
        Looser-1c 23.10.14✎ 14:30 | 
        (8) я делал так - накладывал hold lock на служебную таблицу в начале работы и снимал его в конце.
 Преимущество - лок сам снимается при авосте. | |||
| 10
    
        kokamoonga 23.10.14✎ 14:35 | 
        (9) Блокировка в качестве флага?.. Свежо.
 Жаль что изобретатели .pid-файлов до такого не додумались | |||
| 11
    
        Злобная Печенька 23.10.14✎ 16:27 | 
        (2) А поподробнее можно? )))     | |||
| 12
    
        kokamoonga 24.10.14✎ 03:02 | 
        (11) Каких подробностей ты желаешь?
 При запуске ставить флаг, при завершении снимать его. При этом абсолютно неважно куда он будет записан: в файл, в таблицу, в переменную окружения и так далее. Как верно заметил коллега в (7) может случиться ситуация, что процесс упадет, получит SIGKILL или еще что, а флаг останется взведенным. Поэтому логично писать куда-то идентификатор процесса, а при запуске сверять. Собственно я ничего нового не изобретаю сейчас. В упрощенном виде так работает почти любой демон с pid-файлами. 1. При запуске проверяется существование файла somedaemon.pid по определенному пути. 2. Если файл не существует запускается процесс и создается файл с записью в него pid процесса. 3. Если файл существует, производится поиск процесса по pid и валидация. Например, у меня сейчас в /var/run/nginx/ лежит файл nginx.pid с содержанием 1439 ~$ ps ax | grep 1439 1439 ? Ss 0:00 nginx: master process /usr/sbin/nginx Я хочу убедиться, что это именно nginx: ~$ ps -A | grep 1439 | awk '{print$4}' nginx Если я сейчас попробую сказать # service nginx start, то ничего не произойдет. Соответственно, если процесс существует и проходит валидацию, то скрипт не запускается. В противном случае см. пункт 2. При это не обязательно это должен быть pid процесса и не обязательно запись в файл. Любой удобный способ хранить любой удобный идентификатор процесса. | |||
| 13
    
        vicof 24.10.14✎ 07:18 | 
        Ваша процедура очень запущенная, мадемуазель))     | |||
| 14
    
        Woldemar22LR 24.10.14✎ 07:47 | 
        (7) было такое - бегал с нетбуком цеплялся по SSH и звонил разработчикам какой файл удалить :)  Разработчики предложили доработать программу за скромный полтинник.     | |||
| 15
    
        DrZombi гуру 24.10.14✎ 09:05 | 
        (0) Пиши, какой либо признак запущенности в какую либо табличку... Или файл (на худой конец) :)
 Момент выхода из процедуры, очищай признак... или Удаляй файл. .. Можешь еще сделать счетчик, который будет меняться с интервалом... А лучше время :) Что бы понять, что процедурка не подвисло :) | |||
| 16
    
        Злобная Печенька 24.10.14✎ 15:07 | 
        (12) Спасибо за подробный ответ.  Буду пытаться))     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |