Page 1 sur 1

[commandes unix]Topic d'aide sur les commandes Unix

Publié : mar. 25 sept. 2007, 12:25
par cassyb
salut à tous,

Quand on lance la commande
ps -eo user,pid,start -o comm= | grep rsync

Avez-vous une idée pour que la colonne start soit au format timestamp?

merci.
Cassy.

Publié : mar. 25 sept. 2007, 18:21
par wain
aucune idée, mais si tu récupère le pid, tu peux trouver le timestamp dans /proc/n°du_pid/stat

Publié : mer. 26 sept. 2007, 09:26
par cassyb
salut wain,
merci pour cette astuce mais c'est exprimé en jiffie (1jiffie -> 4ms) d'après wikipedia.
j'ai repérer les colonnes qui varient avec le temps et je sais pas quelle colonne prendre car aucune semble coherente genre au bout d'une minute il devrait y avoir une colonne qui avoisine 15000 or ce n'est pas le cas.
Aucune ne ressemble au timestamp non plus, ni même à un timestamp "jiffilisé" (timestamp*250)

du coup j'ai fait:

Code : Tout sélectionner

ps -eo user,pid,lstart -o comm= | grep rsync
j'ai donc remplacer start par lstart qui donne la date complete
puis je la converti en timestamp
date -d "Tue Sep 25 17:22:27 2007" +%s

Publié : mer. 26 sept. 2007, 19:18
par wain
ok ça me paraît être une bonne solution. J'ai appris plein de trucs là :D

Publié : jeu. 27 sept. 2007, 01:01
par tuxce
bon à savoir, je savais pas que date pouvait servir à transformer une date autre que celle courante :)

Publié : lun. 19 nov. 2007, 13:03
par cassyb
Salut,
J'ai un fichier de log

Code : Tout sélectionner

 Initiateur               XcMonPre
 Correspondant            COMM    
 Ident GrpId Num Marque   1Iq57IEg0           [000000437] [            ]
 Utilisateur              default     
 Sens Type Comp Crypt     [S] [A] [N] [N]
 Etat Org Err Rtry Taux   [R] [20] [000] [00] [00]
 Taille Temps             [0000009690] [000000]
 Nom symb Local                       
 Nom fichier Local        /home/ftp/xcmon/37B/37B20071108120008
 Nom symb Distant         SPAR37B     
 Nom fichier Distant      /SPAR\magellan\in\37B20071108120008
 Date de planification    
 Date d'initialisation    08/11/2007 12:00:08
 Date dernier etat        08/11/2007 12:00:12
 FTP process              1836        
 Initiateur               XcMonPre
...
j'aimerais faire un grep sur 37B20071108120008 et avoir la ligne 3ème ligne du dessus
Etat Org Err Rtry Taux [R] [20] [000] [00] [00]
En gros j'aimerais que le resultat soit de cette forme:
Nom fichier Local /home/ftp/xcmon/37B/37B20071108120008
Etat Org Err Rtry Taux [R] [20] [000] [00] [00]
vous avez une idée sur comment je pourrais faire ça?
merci pour votre aide

Publié : lun. 19 nov. 2007, 13:10
par vincentxavier

Code : Tout sélectionner

grep -B 3 37B20071108120008 | grep -v Temps | grep -v symb
est une solution. On pourrait en imagine d'autres avec awk ou sed

Publié : lun. 19 nov. 2007, 13:12
par vincentxavier
J'ai vu que j'ai oublié de swapper les deux lignes. De mémoie sed permet de le faire, mais je ne me souviens plus de la commande. si y'a un expert en awk, ca vaudrait le coup de se pencher sur la question ;-)

Publié : lun. 19 nov. 2007, 13:14
par vincentxavier
À essayer avec awk :
Prendre '\n' (le passage à la ligne) comme séparateur de champ et demander d'afficher les champs (qui seront des lignes) 9 et 6 !

Publié : lun. 19 nov. 2007, 14:02
par cassyb
b'hein ta commande marche nikel...
grand merci.

Publié : lun. 19 nov. 2007, 14:08
par vincentxavier
Bah, c'est juste que c'est ni optimal, ni élégant ! Passer par deux tubes, ca n'as rien de propre je trouve !