2016-12-09 3 views
1

J'utilise inotify-tools sur CentOS 7 pour exécuter un script PHP sur chaque téléchargement ftp.Comment détecter que le téléchargement ftp est terminé sur un serveur Linux?

Cela fonctionne très bien, mais il y a un problème; lorsque le téléchargement est interrompu (par exemple si j'arrête le téléchargement ou ferme le client FTP), le script est toujours déclenché.

Est-ce possible pour éviter ces situations?

Mon code:

#!/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 

Répondre

1

Thing est: votre script shell contient-il une séquence de commandes.

Mais vous n'avez pas vérifier si ces commandes ont réussi. Et vous êtes surpris qu'ils soient tous exécutés; même quand on a échoué ?!

Selon la façon dont ces outils vous appelez le travail, il pourrait être suffisant pour ajouter simplement

set -e 

avant appelant toutes les commandes (voir here pour plus de détails)

Si cela ne coupe pas: exécutez vos commandes une par une; et détermine pour chacun s'il a échoué; et si oui, quittez simplement votre script!

+0

J'ai essayé d'ajouter 'set -e' au début, n'a pas aidé. Et comment puis-je déterminer si chaque commande a échoué? – HtmHell

+0

Eh bien, à première vue, les commandes utilisent des codes retour (et c'est ce que set -e vérifie). Si cela ne vous aide pas ... vous devez simplement regarder dans chacune de ces commandes et comprendre "comment pourrais-je déterminer que cela a fonctionné" – GhostCat