Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/09/2007, 15h12   #1
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
Par défaut [shell script] redirections multiples (mal gerées)

Salut

But du binz

ecrire dans plusieurs logs le resultat de la même action.... le tout en direct live ..

me suis dit suffit de faire un :

Code :
1
2
3
4
5
6
7
8
9
#!/bin/ksh
....
[ -f /dev/fifo ] || mknod /dev/fifo p
....
for i in 1 2 3 4 5 6 7 8 9 0 ; do $(more /dev/fifo >> /tmp/FP$i &) ; done
 ...
action() > /dev/fifo
rm /dev/fifo
exit 0
là formidable je vois mes logs sauf que ....hé oui....
au lieu d'avoir $LOG1 $LOG2 $LOG3 $LOG4 avec les memes infos dedans

certaines infos sont dans le 1 d'autres dans le 2 , 3 ou le 4 mais aucune log ne contient le tout. (ce que je voulais bien sur).

si je fais un fichier log1 à 4 nouveau
et que je fais un j'ai le contenu complet !

je voulais juste avoir à l'identique les 4 logs sachant que je ne peut pas faire
action > log et des copies après !!!!!


j'obtiens par exemple :
Code :
1
2
3
4
5
6
7
8
9
10
 
-rw-r--r--  1 root root 297898 2007-09-05 14:49 /tmp/FP1
-rw-r--r--  1 root root      0 2007-09-05 14:48 /tmp/FP2
-rw-r--r--  1 root root 294917 2007-09-05 14:49 /tmp/FP3
 
cat /tmp/FP? | wc -c
592815
 
cat /data/source/TEST_FP | wc -c
592815
j'esperai obtenir des /tmp/FP* chacun identiques à /data/source/TEST_FP

bref comment je peux faire ?

J'ai testé ça pour voir :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 /tmp# for i in 1 2 3 4 5 6 7 8 9 0 ; do $(more /dev/FP >> /tmp/FP$i &) ; done
 /tmp# cat /var/log/messages > /dev/FP
 /tmp# ll /tmp
total 632
-rw-r--r--  1 root root 102438 2007-09-05 15:33 FP0
-rw-r--r--  1 root root 188454 2007-09-05 15:33 FP1
-rw-r--r--  1 root root 163878 2007-09-05 15:33 FP2
-rw-r--r--  1 root root  86054 2007-09-05 15:33 FP3
-rw-r--r--  1 root root  28710 2007-09-05 15:33 FP4
-rw-r--r--  1 root root  24516 2007-09-05 15:33 FP5
-rw-r--r--  1 root root     38 2007-09-05 15:33 FP6
-rw-r--r--  1 root root     38 2007-09-05 15:33 FP7
-rw-r--r--  1 root root     38 2007-09-05 15:33 FP8
-rw-r--r--  1 root root     38 2007-09-05 15:33 FP9
 /tmp#
ça ne semble pas fonctionner comme methode.....
c'est vraiment domage....si vous savez comment faire....

c'est donc une question de méthode et pas une erreur de technique...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 15h42   #2
Membre émérite
 
Avatar de Pouic
 
Inscription : octobre 2004
Messages : 668
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2004
Messages : 668
Points : 904
Points : 904
Et tu as jeté un oeil du côté de tee ?
__________________
Software becomes slower faster than hardware becomes faster

http://xrenault.developpez.com
API C standard (C ANSI )
Pouic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 15h47   #3
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
Si j'ai tout suivi, c'est facile à faire avec ZSH.

Code :
more /dev/FP >> /tmp/FP1 >> /tmp/FP2 >> /tmp/FP3
Ou :
Code :
1
2
3
 
cmd=$(for i ({1..10}) echo -n ">> in$i ")
eval more /dev/FP $cmd
Avec Bash, tu t'en sors avec tee :
Code :
1
2
 
more /dev/FP | tee -a /tmp/FP1 | tee -a /tmp/FP2 | tee -a /tmp/FP3
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 16h21   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
quel ane !

je me souvenais plus qu'on pouvais enchainner les redirections >>

bon ducoup j'ai bien tous les infos passant par le fifo FP crées à l'identiques dans tous les fichiers FP1 à FP0 et chacun de ces logs recevant aussi des infos d'autres sources...

c'est nickel

ça marche bien mieux d'un coup là c'est tellement simple que ça fait peur d'avoir oublié un truc si évident.

le bout de code actif est bien sur devenu
Code :
1
2
3
 
(more /dev/fifo >> /tmp/FP1 >> /tmp/FP2 >>..... >> /tmp/FP0) &
action() > /dev/fifo
ps : avec tee ça marche aussi apparement
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 16h35   #5
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
Citation:
Envoyé par frp31 Voir le message
je me souvenais plus qu'on pouvais enchainner les redirections >>
Ksh gère ça ? Bash ne le fait pas en tout cas (il se contente d'ouvrir les premiers fichiers sans rien écrire, ce qui est extrêmement désagréable).
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 14h59   #6
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
bon finalement ça ne marche pas bien meme en ksh
ça depand si la machine est occupée ou pas car selon la charge le temps de copie du fifo permet de remplir tous les fichiers à l'identique ou à la volée (morceaux/morceaux)...

de même avec tee

donc finalement la methode est mauvaise...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 17h13   #7
Membre émérite
 
Avatar de Pouic
 
Inscription : octobre 2004
Messages : 668
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2004
Messages : 668
Points : 904
Points : 904
Et pourquoi faire plusieurs logs à la volée alors que tu pourrais faire un seul log et le copier ensuite ?
(j'ai pas vu de traitements concurrents à l'écriture dans les logs)
__________________
Software becomes slower faster than hardware becomes faster

http://xrenault.developpez.com
API C standard (C ANSI )
Pouic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 17h24   #8
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
comme je l'ai marqué plus haut c'est justement ce que je veux pas !
parceque les logs ne sont pas identiques !
elles recoivent de ce script là seulement des infos identiques mais d'autres scripts ecrivent chacuns dans un des log n°0 à n°9

ce n'est à etre identique que pour valider le test d'ecriture dans X fichiers logs.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 17h39   #9
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
En relisant ton code, je ne comprends pas l'intérêt de la fifo, en fait.
Code :
action() >> /tmp/FP1 >> /tmp/FP2 >> /tmp/FP3
Quel est le problème ?

Sinon, passer par un fichier intermédiaire devrait donner le même résultat :
Code :
1
2
3
action() > /tmp/log
cat /tmp/log >> /tmp/FP1
cat /tmp/log >> /tmp/FP2
Désolé si je donne l'impression d'insister, mais je n'ai pas compris le problème avec le temps de charge.
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 18h44   #10
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
le fifo sera utile dans le script réel pour l'instant en test il sert à rien parceque le binaire n'est pas actif dans la fonction action() et bien sur y'a d'autres scripts qui utilises ce qui passent sur le fifo pour faire des traitements ou pour y envoyer des resultats qui seront eux aussi loggués sur certains fichiers /tmp/*

bref le fifo n'a pas de sens actuellement mais quand on passera en qualif puis en prod oui
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 14h59   #11
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
arf l'astuce est toute con....

suffit de faire un fifo par log....

frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h30.


 
 
 
 
Partenaires

Hébergement Web