Bonjour à tous,
j'ai rencontré un problème assez bizarre il y a quelques jour avec la fonction 'cat'.
Mon script est pourtant relativement simple. Voici une version simplifié du code (sans les if et else):
Le répertoire courant contient au moins un fichier Print_Report_qqch.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 reportFilePrint=${JOB_DIR_out_env}/report/Print_Report_All.txt reportFilePrintNormal=${JOB_DIR_out_env}/report/Print_Report.txt reportFilePrintSplit=${JOB_DIR_out_env}/report/Print_Report_Split.txt touch ${reportFilePrint} touch ${reportFilePrintNormal} touch ${reportFilePrintSplit} cat ${JOB_DIR_out_env}/report/Print_Report* > ${reportFilePrint} 2>&1
Mon problème : le cat semble boucler infiniment. Le script tourne sans s'arrêter jusqu'à ce que le fichier de sortie atteigne la taille maximale admissible, soit environ 2Go, alors qu'il ne devrait en faire que quelques dixaines de Ko.
Forcément, le temps de création est affreusement long et s'accapare les ressources de la machine, mais en plus le fichier produit doit encore être relu plus tard dans le script par un programme perl pour traitement. Je vous laisse imaginer la charge mémoire que cela engendre car le script perl mets les données du fichier dans un hash...
Ma solution a été de renommer le fichier de sortie et de supprimer le 'touch' mais j'aimerais bien savoir pourquoi j'ai eu ce problème.
Pour finir le pavé, ce problème n'est apparu que pendant les tests utilisateurs et je n'ai pas réussi à le reproduire sur la machine de dev..
Donc si quelqu'un a une expliqcation, je suis preneur.
Partager