J'ai un code scientifique hérité qui s'exécute sur un cluster Rocks avec SGE. J'ai un script de soumission de travail spécifique à l'application qui génère des scripts qsub (c'est-à-dire le script que Sun Grid Engine prend et exécute).Résolution de problèmes SIGTERM avec un tee sur un cluster dans des travaux SGE
Dans le script qsub, mon application héritée est appelée. Cette application envoie sa sortie à STDOUT. SGE intercepte STDOUT et le spoule dans un fichier dans le répertoire de base des utilisateurs, afin que l'utilisateur puisse voir les résultats s'accumuler en temps réel. Je veux que ce comportement soit maintenu, mais en même temps, je veux enregistrer de manière transparente toutes les sorties en arrière-plan. Je pensais que tee serait parfait pour y parvenir. J'ai donc modifié le script de soumission de travail pour exécuter l'app et le tube STDOUT à tee, qui enregistre STDOUT dans un fichier qui est copié dans un magasin central une fois le travail terminé. L'application est géré et canalisé au tertre comme suit:
\$GMSCOMMAND | tee \$SCRATCHDIR/gamess_output.log
Le problème est, depuis que j'ai commencé la tuyauterie du code à tee, l'application a été en train de mourir avec SIGTERMs, surtout quand je demande plusieurs noeuds. J'ai essayé d'utiliser le paramètre -i (ignore les interruptions) avec tee: cela ne fait aucune différence. Les choses fonctionnent bien si je redirige la sortie de l'application vers un fichier puis chat le fichier une fois l'application terminée, mais je ne peux pas permettre aux utilisateurs de voir l'accumulation des résultats en temps réel (ce qui est une exigence importante).
Des idées sur les raisons pour lesquelles cette utilisation de té pourrait échouer? Ou alternativement, des idées sur la façon dont je pourrais réaliser la fonctionnalité souhaitée?
Pourriez-vous essayer de remplacer la commande 'tee' par' cat' - pour voir si c'est le tuyau qui pose problème? –
Etes-vous sûr que c'est SIGTERM, et non SIGPIPE? Essayez de mettre strace -o tr.gms. $ SGE_JOBID pour suivre les appels système et les signaux. Peut-être tracer à la fois $ GMSCOMMAND et tee. –