Как определить, что загрузка ftp завершена на сервере Linux?

Я использую inotify-tools в CentOS 7 для выполнения php-скрипта при каждой загрузке ftp.

Работает нормально, но есть одна проблема; когда загрузка прерывается (например, если я прекращаю загрузку или закрываю FTP-клиент), сценарий все равно запускается.

Можно ли избежать таких ситуаций?

Мой код:

#!/bin/sh
MONITORDIR="/path/to/some/dir"
inotifywait -m -r -e close_write --format '%w%f' "${MONITORDIR}" | while read NEWFILE
do
    php /path/to/myscript.php ${NEWFILE}
done

1 ответ

Дело в том, что ваш сценарий оболочки содержит последовательность команд.

Но вы не проверяете, были ли эти команды успешными. И вы удивлены тем, что все они казнены; даже когда один не удалось?!

В зависимости от того, как работают те инструменты, которые вы вызываете, может быть достаточно просто добавить

set -e

перед вызовом любых команд (подробности см. здесь)

Если это не сработает: запустите ваши команды одну за другой; и определить для каждого, если это не удалось; и если это так; просто выйдите из сценария!

Другие вопросы по тегам