Problème d'écriture de fichier/kill

Fermé
gamerounet - 23 sept. 2011 à 16:28
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 26 sept. 2011 à 19:36
Bonjour,

Mon script me permet de lancer plusieurs fois la commande Sar en background, et de récuperer ces valeurs dans des fichiers, pendant une durée déterminé. A la fin de cette durée, j'effectue un kill sur mes commande sar, et je mix tout mes sous fichier en un seul fichier résumé (qui me servira plus tard à tracer un graphe).

Lorsque mon script tourne en background, je m'aperçois qu'en faisant ls-l, mes fichiers se remplisse au fur et a mesure (leur taille augmente, et un cat fichier m'affiche leur contenue correct).
Cependant, à la fin de la durée voulue, les kills s'effectuent bien, mais de temps en temps (et c'est bien là le problème...), certain fichiers se "vide" d'un coup aprés le kill (leur taille redeviens 0 alors que jusqu'à la fin, il se remplissait "normalement"), ce qui pose evidemment un problème est fausse le fichier résumé.

J'ai essayé de chercher des informations sur le fait que les fichiers soit remplis en mémoire et que cela puisse poser un problème si on les kill à ce moment là, mais je n'ai rien trouvé de ce coté là...
A voir également:

2 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
23 sept. 2011 à 19:52
Quelle commande utilises-tu pour tuer ton processus ?
Un kill sans signal en option envoi TERM qui peut être piégé par la commande. Elle peut alors réaliser des opérations de nettoyage (annuler les écriture des fichiers par exemple) avant de se terminer.
Avec
kill -KILL $PID
le signal n'est plus interruptible et le processus est tué instantanément.
0
Pour tuer mes processus, je faisais appel à ma fonction killid écrite ci-dessous :

killid ( )
{
kill -KILL ${id_sar_u_[$1]} ${id_sar_r_[$1]} ${id_sar_q_[$1]} ${id_sar_c_[$1]} ${id_sar_w_[$1]} ${id_sar_b_[$1]} ${id_sar_I_[$1]} ${id_sar_n_[$1]} ${id_sar_v_[$1]}
}
J'ai essayé avec kill -KILL , est le résultat est le même.

Je recupère mes valeurs id_sar_*_[$i] lorsque je lance mes commandes sar , de cette façon :

Par exemple pour sar -u :

sar -u 2 600000 > saru_$1&
id_sar_u_[$1]=$!
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
26 sept. 2011 à 19:36
Tente de copier les fichiers juste avant le kill s'ils sont pas trop gros.
0