J'ai une tâche à rsync un répertoire de serveur distantComment faire verrouillage de fichier avec bash
rsync -av [email protected]:/srv/data/ /srv/data/
Pour le faire fonctionner régulièrement et éviter Script problème « reenter », je crée un verrou de fichier « in_progress » avec pid de la progression de rsync, qui indique si le programme est toujours en cours d'exécution.
lock(){
echo $1 > in_progress
}
Cette fonction de juger si les progrès de rsync est toujours en cours d'exécution:
is_running(){
pid=$(cat in_progress)
return ps aux | awk '{print $2}' | grep $pid
}
je peux obtenir le pid de passer à fonctionner lock
avec ce
$!
j'avais mettre le fond de progression rsync pour obtenir le pid de rsync, donc je reçois ceci
rsync -av [email protected]:/srv/data/ /srv/data/ &
lock $!
mais lorsque les progrès de rsync est fait, je rm le fichier de verrouillage
J'ai essayé
rsync -av [email protected]:/srv/data/ /srv/data/ && rmLock &
lock $!
... il semble que le pid je suis arrivé est pas le pid du progrès rsync :-(
double possible de [Comment empêcher un script exécution simultanée?] (Http://stackoverflow.com/questions/169964/how-to-prevent-a-script-from-running-simultanément) – Palec
Il est bon d'indiquer que votre problème est résolu en acceptant une réponse utile. – klashxx