Mettre le résultat d'un grep comme argument d'un grep
Résolu
Bonjour,
je pêche sur un grep actuellement
Je veux a la base verifier qu'un pid bien défini est présent ou non
ps -ef | egrep -vw '(ps|egrep)' | egrep PID
Je trouve ce pid dans une log et j'aimerai ne plus avoir a afficher la log pour trouver le pid
Il est possible d’afficher mon pid via ceci
grep pid LOG | grep -o '[[:digit:]]*'
Ce que je voudrai c'est fusionner ces 2 lignes qui fonctionne séparément
ps -ef | egrep -vw '(ps|egrep)' | egrep 3424
&
grep pid LOG | grep -o '[[:digit:]]*'
Un truc du genre :
ps ef | egrep -vw '(ps|egrep)' | egrep 'grep pid /appli01/bakweb/log/cde_int_prel-ext_cre-int_ar_160107_14187.log | grep -o '[[:digit:]]*''
Merci d'avance
je pêche sur un grep actuellement
Je veux a la base verifier qu'un pid bien défini est présent ou non
ps -ef | egrep -vw '(ps|egrep)' | egrep PID
Je trouve ce pid dans une log et j'aimerai ne plus avoir a afficher la log pour trouver le pid
Il est possible d’afficher mon pid via ceci
grep pid LOG | grep -o '[[:digit:]]*'
Ce que je voudrai c'est fusionner ces 2 lignes qui fonctionne séparément
ps -ef | egrep -vw '(ps|egrep)' | egrep 3424
&
grep pid LOG | grep -o '[[:digit:]]*'
Un truc du genre :
ps ef | egrep -vw '(ps|egrep)' | egrep 'grep pid /appli01/bakweb/log/cde_int_prel-ext_cre-int_ar_160107_14187.log | grep -o '[[:digit:]]*''
Merci d'avance
A voir également:
- Mettre le résultat d'un grep comme argument d'un grep
- Resultat foot - Télécharger - Vie quotidienne
- Lexer resultat - Télécharger - Sport
- Python est introuvable. exúcutez sans argument pour procúder ó l - Forum Python
- Résultat loto bulgarie autriche azerbaïdjan ✓ - Forum Loisirs / Divertissements
- Erreur argument casio graph 35+e ✓ - Forum calculatrices
4 réponses
Bonjour
Si tu veux injecter le résultat d'une commande shell dans une autre commande shell tu peux :
1) mémoriser le résultat de la première commande dans une variable intermédiaire. Ce n'est pas une honte, ça permet d'être plus lisible et de ré-éxploiter ce résultat par la suite :p
2) directement utiliser l'opérateur
Bonne chance
Si tu veux injecter le résultat d'une commande shell dans une autre commande shell tu peux :
1) mémoriser le résultat de la première commande dans une variable intermédiaire. Ce n'est pas une honte, ça permet d'être plus lisible et de ré-éxploiter ce résultat par la suite :p
PID=$(grep pid LOG | grep -o '[[:digit:]]*') ps -ef | egrep -vw '(ps|egrep)' | egrep ${PID}
2) directement utiliser l'opérateur
$(...)(en bash) (ou
`...`. en shell) pour ne former qu'une commande :
ps -ef | egrep -vw '(ps|egrep)' | egrep $(grep pid LOG | grep -o '[[:digit:]]*')
Bonne chance
Salut,
Peux-tu nous mettre un exemple de ce que renvoient les commandes :
Ainsi qu'un bout de ton fichier de log d'où est extrait le PID.
Peux-tu nous mettre un exemple de ce que renvoient les commandes :
ps -ef | egrep -vw '(ps|egrep)' | egrep 3424
grep pid LOG | grep -o '[[:digit:]]*'
Ainsi qu'un bout de ton fichier de log d'où est extrait le PID.
Alors UnGars pour les renvoi de commandes
renvoi (si le PID : 3424 est en cours) quelque chose du type :
root 3424 1 0 2015 ? 00:00:04 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid
sinon il ne renvoi rien
------------------------------------------------------------------------------------
renvoi le n° de l'ID en cherchant dans la log la ligne faisant référence au PID et en extrayant juste le numérique
la partie grep pid log.log me retour donc ceci :
"le package semble tourne dans le pid 3439 toujours en cours"
et la partie grep -o '[[:digit:]]*' extrait le 3439
ps -ef | egrep -vw '(ps|egrep)' | egrep 3424
renvoi (si le PID : 3424 est en cours) quelque chose du type :
root 3424 1 0 2015 ? 00:00:04 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid
sinon il ne renvoi rien
------------------------------------------------------------------------------------
grep pid LOG | grep -o '[[:digit:]]*'
renvoi le n° de l'ID en cherchant dans la log la ligne faisant référence au PID et en extrayant juste le numérique
bakwebek 3439 3079 0 07:07 bakwebek 3950 3439 0 07:09 le package semble tourne dans le pid 3439 toujours en cours bakwebek 3439 3079 0 07:07 ? 00:00:00 /bin/ksh /appli01/bakweb/com/cde_ext_flxe_brt.com bakwebek 3950 3439 0 07:09 ? 00:00:00 /bin/ksh /appli01/bakweb/com/cde_flxe_brt_pos.com fin de traitement [[[ le package est deja en train de tourner
la partie grep pid log.log me retour donc ceci :
"le package semble tourne dans le pid 3439 toujours en cours"
et la partie grep -o '[[:digit:]]*' extrait le 3439
Merci d'avance