2016-12-09 4 views
1

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

Он работает нормально, но есть одна проблема; когда загрузка прерывается (например, если я перестаю загружать или закрывать 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 

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

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

+0

Я попытался добавить 'set -e' в начале, не помог. И как определить, была ли неудачна каждая команда? – HtmHell

+0

Ну, на первый взгляд, команды используют коды возврата (и это то, что установлено -e проверяется). Если это не поможет ... вам просто нужно изучить каждую из этих команд и цифру «как я могу определить, что это сработало», – GhostCat