2015-10-02 1 views
1

J'ai un travail de courrier (Job Mail) qui fonctionnent avec cette conditionObtenez le prédécesseur du poste Nom du travail dans un scriopt

s (emploi A) | s (Job B) | s (Job C)

, si l'un des trois travaux réussit à exécuter le travail de messagerie et qu'il s'exécute comme prévu.

Maintenant je dois obtenir le nom du prédécesseur de succès Job qui déclenchent Job Mail dans le script que j'ai une logique dans le script pour générer un fichier A Incase Job Un succès et de générer un fichier B Incase succès Job B

Répondre

0

A l'intérieur des scripts shell, utilisez job_depends -c -j Job-Mail et recherchez les conditions atomiques. Vous obtiendrez tous les emplois prédécesseurs et leur statut. Avec l'aide de sed/awk/grep, voyez quels jobs sont réussis et renvoyez le nom. Si plus d'un succès au travail, puis lever l'exception ou voir qui a terminé en premier et le retourner.

Alternativement, vous pouvez faire si d'autre dans la coquille et l'état doit être quelque chose comme

jobWhichKickedJob-Mail = "" 
if `autostatus -j Job A` = 'SUCCESS' then 
    jobWhichKickedJob-Mail = "Job A" 
elif `autostatus -j Job B` = 'SUCCESS' then 
    jobWhichKickedJob-Mail = "Job B" 
else 
    jobWhichKickedJob-Mail = "Job C" 

et utiliser cette variable.

Remarque: Au moment où votre script est en cours d'exécution, si un autre travail réussit, vous risquez de ne pas obtenir le résultat correct.

+0

Vous ne pouvez pas ** identifier ** le travail déclenché en utilisant cette logique, car le travail A, B ou C aurait pu être sur SUCCESS depuis les jours précédents. Vous n'avez aucune indication sur quel travail a déclenché Job-Mail actuellement –