je suis arrivé à hier solution avec l'aide d'ici (il est de trouver une liste de répertoires à traiter avec HandBrakeCLI, et de mettre les résultats dans un répertoire codé en dur):Le processus d'appel en boucle prend beaucoup de temps. Comment en sortir?
#!/bin/bash
source_dir=/Volumes/VolumeName
dest_dir=/Volumes/OtherName
export dest_dir # export allows use by subprocesses!
find "$source_dir" -type d -name "VIDEO_TS" -exec bash -c '
for dir; do
name=${dir%/VIDEO_TS}
name=${name##*/}
./HandBrakeCLI -i "$dir" -o "$dest_dir/$name.m4v"
done
' _ {} +
Le script shell fonctionne très bien, mais si je tente de l'arrêter en tuant le processus principal:
kill -9 <pid>
il semble fonctionner mais revient à la vie et appelle HandBrakeCLI avec le fichier suivant dans la liste générée par trouver.
Existe-t-il un moyen d'arrêter de manière fiable tout cela? Je suppose que d'une façon ou d'une autre les appels futurs à la CLI sont mis en file d'attente/en cache, mais quelqu'un pourrait-il expliquer ce qui se passe s'il vous plaît?
Je suggère d'utiliser commande 'trap'. Voir 'piège d'aide '. – Cyrus
Merci. Je peux voir le principe, mais je n'arrive pas à comprendre l'application ici. Si je place quelque chose comme 'trap \' du code \ '2' en haut du fichier, je ne pense pas que cela ajoute quelque chose car je peux déjà envoyer ctrl-C au script principal. Alors, est-ce que je le mets quelque part dans la boucle do ... done et que dois-je faire dans la partie code? – Lorccan