*/2 * * * * a=''; a=`ps axl | grep import_sunmar_price.ph[p] | awk {'print $3'}`; if [ -z $a ]; then echo 'restart'; exec /var/www/gate-32/htdocs/bitrix/crontab/sunmar_list_index; else echo 'work'; fi
Есть вот такой вызов по крону скрипта (если процесс не запущен, то запускать). Скрипт скачивает с ftp файл и парсит его. После выполнения Записывается в базу время начала и время конца скрипта. Он идет около 10 мин. Поставил его вечером, статистика такая:
Выполнялся каждые 10 мин, примерно до часа ночи. Запись о том, что скрипт закончился есть. Далее процесс запуска крона почему-то остановился. Записей больше не было. Проснулся утром - в htop процесса нет (делаю от root). Запустил его вручную - процесс пошел. Опять каждые 10 мин. Если бы не было связи с ftp - скрипт сам бы начал запускаться после "поднятия" ftp. А я его запускал вручную - что может быть? И как протестировать причины? (оповещение на мыло с крона поставить пробовал - письма не приходят)
Лог пишет:
Jul 15 02:14:01 unknown-6335 crond[30195]: (root) CMD (a=''; a=`ps axl | grep import_sunmar_price.ph[p] | awk {'print $3'}`; if [ -z $a ]; then echo 'restar$ - показывает, запись (в таблице нет записи о выполнении) - т.е. после прохождения скрипта полюбому делается запись о выполнении в бд. Как могло произойти то, что записис в бд нет - скачанных данных нет (файл качает данные). Правильный ли синтаксис
Мне кажется, что может быть проблема в инструкции. можно ли как-то написать инструкцию так, чтобы он проверял - например, если процесс идет больше 20 мин, то kill процесс?