2016-06-30 6 views
1

Je dispose d'un tableau dans un script shell Linux. Array contient la liste des commandes dans le script shell bash. Par exemple:Comment puis-je vérifier le code de sortie d'un processus individuel s'exécutant en parallèle exécuté par GNU Parallel?

args =("ls","mv /abc/file1 /xyz/file2","hive -e 'select * from something'") 

Maintenant j'exécute ces commandes en tableau à l'aide parallèle GNU comme ci-dessous

parallel ::: "${args[@]}" 

Je veux vérifier le code d'état du processus individuel quand ils ont fini. Je suis conscient que $? me donnera le nombre de processus qui ont échoué mais je veux connaître le code de sortie du processus individuel. Comment puis-je attraper les codes de sortie de processus individuels exécutés en parallèle GNU?

Répondre

0

logfile --joblog

Logfile pour les travaux exécutés. Enregistrer une liste des tâches exécutées dans le fichier journal suivant: numéro de séquence, sshlogin, heure de début en secondes depuis l'heure, durée en secondes, octets dans les fichiers transférés, octets dans les fichiers renvoyés, état de sortie, signal, et la course de commande.

+0

Cela fonctionne aussi. Je vous remercie . – npaluskar

0

Utilisez l'option --halt 1, ce qui fait que parallel se ferme sur la commande d'arrêt, tout en renvoyant son code de sortie. De man parallel:

--halt-on-error val 
--halt val 
     How should GNU parallel terminate if one of more jobs fail? 

     0  Do not halt if a job fails. Exit status will be the 
       number of jobs failed. This is the default. 

     1  Do not start new jobs if a job fails, but complete the 
       running jobs including cleanup. The exit status will be 
       the exit status from the last failing job. 

     2  Kill off all jobs immediately and exit without cleanup. 
       The exit status will be the exit status from the 
       failing job. 

     1-99% If val% of the jobs fail and minimum 3: Do not start 
       new jobs, but complete the running jobs including 
       cleanup. The exit status will be the exit status from 
       the last failing job. 
+0

Oui, il vous donne l'état quand un travail particulier se termine comme ---> parallel: Ce travail a échoué: "votre commande qui a échoué". Ça a marché . Je vous remercie. – npaluskar