Мое приложение принимает файлы из SFTP и начинает его обрабатывать. У меня задание cron, которое установлено в 5 минут. Предположим, что файл прибыл в SFTP. Операция pull берет файл и начинает обрабатывать записи внутри него. Более продолжительное время обработки 5 минут cronjob снова вытаскивает второй файл и находит первый файл для обработки и остановки.
Как справиться с этой ситуацией. Пожалуйста помоги.
Не используйте задание cron для приложений, если вы не уверены, что они никогда не будут работать дольше, чем интервал между их прогонами. Используйте сон!
#!/bin/bash
while true
do
echo "Press [CTRL+C] to stop.."
get_files_from_sftp
process_files
sleep 5m
done
Предложение @Leo может не работать, потому что у нас недостаточно информации о вашем приложении, возможно, он не может работать несколько раз параллельно. Но попробуй.
Предложение @fedorqui также хорошо. Используйте mktemp
для создания уникальных временных файлов или поместите файл pid
в /var/run/*
.
/tmp/myscript
который удаляется после завершения первого cronjob.