Il s'agit de la commande pegasus-exitcode qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
pegasus-exitcode - Vérifie les fichiers stdout/stderr d'un travail de workflow pour toute indication
qu'une erreur s'est produite dans le travail. Ce script est destiné à être invoqué automatiquement par
DAGMan en tant que script POST d'un travail.
SYNOPSIS
pegasus-code de sortie [-h][-r rv][-n][-s msg][-f msg] travail.out
DESCRIPTION
pegasus-code de sortie est un utilitaire qui examine le STDOUT d'un travail pour déterminer si le travail
a échoué et renomme les fichiers STDOUT et STDERR d'un travail pour les conserver au cas où le travail
est réessayé.
Pégase utilise pegasus-code de sortie comme post-scriptum DAGMan pour les travaux soumis via Globus GRAM.
Cet outil existe comme solution de contournement à un problème connu avec Globus et Condor-G où le
les codes de sortie des travaux GRAM ne sont pas renvoyés. C'est un problème parce que Pegasus utilise le
code de sortie d'un travail pour déterminer si le travail a échoué ou non.
Afin de contourner le problème du code de sortie, Pegasus peut envelopper les tâches GRAM avec Kickstart,
qui enregistre le code de sortie du travail dans un enregistrement d'invocation XML, qu'il écrit dans le
STDOUT du travail. Le STDOUT est transféré de l'hôte d'exécution vers l'hôte de soumission
lorsque le travail se termine. Une fois le travail terminé, DAGMan exécute le postscript du travail, qui
Pégase se prépare à être pegasus-code de sortie. pegasus-code de sortie regarde l'enregistrement d'appel
généré par kickstart pour voir si le travail a réussi ou échoué. Si l'enregistrement d'appel
indique un échec, puis pegasus-code de sortie renvoie un résultat différent de zéro, ce qui indique à
DAGMan que le travail a échoué. Si l'enregistrement d'appel indique que le travail a réussi,
puis pegasus-code de sortie renvoie 0, ce qui indique à DAGMan que le travail a réussi.
De plus, les tâches en cluster exécutées avec pégase-cluster or pégase-mpi-cluster auront
un enregistrement [cluster-summary] dans leur STDOUT. pegasus-code de sortie peut examiner ces dossiers pour
déterminer si l'une des tâches du travail en cluster a échoué.
pegasus-code de sortie effectue plusieurs vérifications (certaines facultatives) pour déterminer si un travail a échoué
ou pas. Ces contrôles comprennent :
1. Le code de sortie Condor est-il différent de zéro ? Si c'est le cas, le travail a échoué.
2. STDOUT est-il vide ? S'il est vide, le travail a échoué.
3. Y a-t-il des messages d'échec dans STDOUT ou STDERR ? Si c'est le cas, le travail a échoué.
4. Tous les messages de réussite sont-ils dans le STDOUT ou le STDERR ? Sinon, le travail a échoué.
5. L'enregistrement [cluster-summary] indique-t-il que le travail a réussi. Si non, alors
le travail a échoué.
6. Y a-t-il des balises avec une valeur non nulle ? S'il y en a, le travail a échoué.
Notez que, s'il s'agit d'un travail en cluster, il peut y avoir plusieurs balises, une pour
chaque tâche. Si l'un d'entre eux est différent de zéro, le travail a échoué.
7. Y a-t-il au moins un tag avec une valeur zéro ? Il doit y avoir au moins un
appel réussi ou le travail a échoué.
Par ailleurs, pegasus-code de sortie permet à l'appelant de spécifier le code de sortie renvoyé par Condor
en utilisant l' --revenir argument. Cela peut être transmis à pegasus-code de sortie dans un post DAGMan
script en utilisant la variable $RETURN. Si cette valeur est non nulle, alors pegasus-code de sortie
renvoie un résultat différent de zéro avant d'effectuer toute autre vérification. Pour les travaux GRAM, la valeur de
$RETURN sera toujours 0, que le travail ait échoué ou non.
En plus de vérifier la réussite/l'échec d'un travail, pegasus-code de sortie renomme également le
STDOUT et STDERR du travail de sorte que si le travail est réessayé, les STDOUT et STDERR de
l'exécution précédente n'est pas perdue. Il le fait en ajoutant un numéro de séquence à la fin de
les fichiers. Par exemple, si le fichier STDOUT s'appelle "job.out", alors la première fois que le
le travail est exécuté pegasus-code de sortie renommera le fichier "job.out.000". Si le travail est exécuté à nouveau,
puis pegasus-code de sortie voit que "job.out.000" existe déjà et renomme le fichier
"job.out.001". Il continuera à renommer le fichier en incrémentant le numéro de séquence
chaque fois que le travail est exécuté.
OPTIONS
-h, --Aidez-moi
Imprime un résumé d'utilisation avec toutes les options de ligne de commande disponibles.
-r rv, --revenir rv
Valeur de retour rapportée par DAGMan. Cela peut être spécifié dans le DAG en utilisant le $RETURN
variable. Si ce n'est pas zéro, alors pegasus-code de sortie échoue immédiatement avec une valeur non nulle
valeur de retour elle-même. S'il est égal à zéro, faites simplement pivoter le fichier et ne recherchez pas
sortie kickstart appropriée. Cette option peut être utilisée dans les cas où kickstart ne peut pas être
utilisé (comme pegasus-create-dir) pour activer la rotation des fichiers.
-n, --pas de renommage
Ne pas renommer travail.out et travail.err à .out.XXX et .err.XXX. Cette option est utilisée
principalement pour les tests.
-f msg, --échec-message msg
Message d'échec à trouver dans le travail stdout/stderr. Si ce message existe dans le
stdout/stderr du travail, alors le travail sera considéré comme un échec quoi qu'il arrive
une autre sortie existe. Si plusieurs messages d'échec sont fournis, aucun d'entre eux ne peut
existent dans la sortie ou le travail est considéré comme un échec.
-s msg, --message-de-succès msg
Message de réussite à trouver dans le travail stdout/stderr. Si ce message n'existe pas dans le
stdout/stderr du travail, alors le travail sera considéré comme un échec quoi qu'il arrive
une autre sortie existe. Si plusieurs messages de réussite sont fournis, ils doivent tous
existent dans la sortie ou le travail est considéré comme un échec.
AUTEURS
Gédéon Juve[email protected]>
Équipe Pégase http://pegasus.isi.edu
Utilisez pegasus-exitcode en ligne en utilisant les services onworks.net