Je suis en train de resynchroniser quelques annuaires. J'ai un terminal bash ouvert et j'exécute quelque chose comme ceci:
for DIR in * ; do rsync -a $DIR example.com:somewhere/ ; done
Cependant, si je veux tout arrêter, j'appuie sur Control-C. Cela arrête le rsync, mais ensuite il continue à aller au suivant. Dans ce cas, je réalise ce qui s’est passé et appuie ensuite sur Control-C comme un fou jusqu’à ce que tout fonctionne à nouveau.
Y at-il un moyen de "réparer" cela. Je le veux, donc si j'ai une boucle comme celle-là et que j'appuie sur Ctrl-C, cela me ramènera à mon shell bash.
Réponses:
Cela permettra également de quitter la boucle si une exécution individuelle de rsync échoue pour une raison quelconque.
la source
break 2
(ou remplacez "2" par le nombre de boucles imbriquées que vous souhaitez terminer).Pour développer la réponse de Dennis, votre code pourrait ressembler à ceci:
Pour un exemple pratique (impliquant rsync), consultez http://gist.github.com/279849 .
la source
Vous pouvez définir une interruption pour Control-C.
s'exécutera
command
lorsque Control-C sera enfoncé. Il suffit de placer latrap
déclaration quelque part dans votre script à un point où vous souhaitez qu'elle devienne effective.la source
Ctrl-Z
pour suspendre le script.kill %%
Crédits, explications et plus de détails dans cette réponse .
la source
Lorsque vous mettez une chaîne de commandes entre parenthèses, la chaîne agira comme un processus unique, recevra le SIGINT et se terminera lorsque vous frapperez Ctrl- C:
Mais! Dans le cas de la
rsync
commande, elle autorise plusieurs sources. Le code que vous avez écrit serait ainsi mieux écrit:la source
J'ai tendance à mettre une autre commande dans ma boucle qui peut facilement être interrompue. Il faut appuyer sur deux touches Ctrl-C.
Ce n'est pas une excellente solution pour ce rsync, que vous voudrez probablement exécuter rapidement. Mais cela fonctionne bien pour d'autres boucles, comme celle-ci:
Cette boucle recherchera à chaque fois l'adresse de example.com à travers la boucle, ce qui est utile si vous surveillez un changement DNS.
la source