У меня есть процесс, который начинается с того, что конечный пользователь копирует файлы изображений в папку Ubuntu через ftp с помощью программного обеспечения filezilla. С другой стороны, у меня есть командный файл, который запускается с использованием CRON, он должен быть выполнен в полночь.
Моя проблема в том, что иногда количество изображений огромно, а ftp-процесс все еще работает в полночь, что в конечном итоге приводит к беспорядку с изображениями.
Я хотел бы исправить это, запустив сценарий bash после завершения процесса ftp. Есть ли способ сделать это?
Изменить: ftp-сервер, который я использую, - это тот, который поставляется с xampp 1.6, который является proftpd
Идея @Zoredache, вероятно, самая чистая; ловушка ftpd, которая срабатывает после завершения загрузки.
В противном случае, если бы я не думал, быстрый взлом состоял бы в том, чтобы просто обернуть ваш cron-скрипт чем-то, что проверяет, запущен ли процесс ftpd. Если да, ждите () в pid. Это заблокирует выполнение ваших процессов до завершения процесса ftpd. Обратите внимание, что здесь есть состояние гонки, так как другой процесс ftpd может запускаться во время выполнения вашего скрипта.
В качестве альтернативы вы можете написать небольшого демона и использовать систему inofity в ядре 2.6, чтобы следить за тем, как вы загружаете свой каталог, и обрабатывать любые файлы с измененным временем <некоторый порог; по сути, ловушка завершения файла «наугад».