Expert en Grep\Egrep ?
Résolu
Jo'
-
Jo' -
Jo' -
Bonjour,
J'ai une liste de processus dont je dois vérifier s'ils sont en cours d'execution sur le serveur, je dois ainsi retourner les processus non actifs, tout cela en ligne de commande.
Je cherche donc à faire une commande du type : grep (ma liste de processus à vérifier), mais comment faire pour qu'il me retourne les éléments de ma liste non trouvé ?
D'avance un grand merci pour votre aide.
J'ai une liste de processus dont je dois vérifier s'ils sont en cours d'execution sur le serveur, je dois ainsi retourner les processus non actifs, tout cela en ligne de commande.
Je cherche donc à faire une commande du type : grep (ma liste de processus à vérifier), mais comment faire pour qu'il me retourne les éléments de ma liste non trouvé ?
D'avance un grand merci pour votre aide.
A voir également:
- Expert en Grep\Egrep ?
- Expert php pinterest - Télécharger - Langages
- Musique expert miami ✓ - Forum Cinéma / Télé
- Expert casino telegram - Forum Consommation & Internet
- Musique de fin Experts Miami Saison 9 épisode 1 - Forum Musique / Radio / Clip
- Expert cpu - Télécharger - Informations & Diagnostic
16 réponses
Salut,
Un truc du genre :
;-))
Un truc du genre :
while read fich do ps -e | grep "$fich" >/dev/null if [ "$?" = 1 ] then echo "$fich n'est pas en service" fi done < ma_liste_de_processusPas testé...
;-))
Salut Jipicy !
Tout d'abord, merci pour ta réponse !
J'ai utilisé ton code dans une boucle FOR (car je suis plus à l'aise), le tout sur une seule ligne (c'est une prérogative). Mais j'ai le message suivant :
ksh: syntax error: `done' unexpected
Vois-tu pourquoi il ne veut pas de mon done ? Voici ma ligne de commande :
for n in xntpd uxpwmgr uxgpw sendmail; do ps -e | grep n >/dev/null; if [ "$?" = 1 ] Then echo "$n n'est pas en service" fi; done;
Merci encore et bonne fin de semaine.
Tout d'abord, merci pour ta réponse !
J'ai utilisé ton code dans une boucle FOR (car je suis plus à l'aise), le tout sur une seule ligne (c'est une prérogative). Mais j'ai le message suivant :
ksh: syntax error: `done' unexpected
Vois-tu pourquoi il ne veut pas de mon done ? Voici ma ligne de commande :
for n in xntpd uxpwmgr uxgpw sendmail; do ps -e | grep n >/dev/null; if [ "$?" = 1 ] Then echo "$n n'est pas en service" fi; done;
Merci encore et bonne fin de semaine.
J'ai mis la ligne suivante mais maintenant j'ai le message :
ksh: syntax error: `fi' unexpected
for n in xntpd uxpwmgr uxgpw uxfx; do ps -e | grep n >/dev/null; if [ "$?" = 1 ] ; Then echo "$n n'est pas en service" ; fi ; done;
Il se fiche de moi non ? :)
Merci encore pour ton aide
ksh: syntax error: `fi' unexpected
for n in xntpd uxpwmgr uxgpw uxfx; do ps -e | grep n >/dev/null; if [ "$?" = 1 ] ; Then echo "$n n'est pas en service" ; fi ; done;
Il se fiche de moi non ? :)
Merci encore pour ton aide
Haaan bien vu !
Bon là ça fonctionne !!
Par contre ça me retourne rien, pourtant j'ai mis de tester "toto" comme processus mais il me renvoi le prompt sans me dire que toto n'est pas en service...
$ for n in xntpd uxpwmgr toto uxgpw uxfx; do ps -e | grep n >/dev/null; if [ "$?" = 1 ] ; then echo "$n n'est pas en service" ; fi ; done;
$
Tu vois d'où ça peut venir ? Sinon, elle veut dire quoi la condition du IF ?
Merci beaucoup pour ton aide en tout cas.
Bon là ça fonctionne !!
Par contre ça me retourne rien, pourtant j'ai mis de tester "toto" comme processus mais il me renvoi le prompt sans me dire que toto n'est pas en service...
$ for n in xntpd uxpwmgr toto uxgpw uxfx; do ps -e | grep n >/dev/null; if [ "$?" = 1 ] ; then echo "$n n'est pas en service" ; fi ; done;
$
Tu vois d'où ça peut venir ? Sinon, elle veut dire quoi la condition du IF ?
Merci beaucoup pour ton aide en tout cas.
Change le "ps -e" par "do echo "$n" | grep 'n' >/dev/null;"
Le if teste la valeur du code de retour (contenu dans la variable "$?") de la dernière commande exécutée, qui doit être égal à "0" (zéro) si la commande a réussi (dans ton cas ça revient à dire que le grep a bien trouvé un "n" dans le nom du processus) ou égal à "1" (un) si la commande a échoué (pas de "n" dans le nom du processus).
Le if teste la valeur du code de retour (contenu dans la variable "$?") de la dernière commande exécutée, qui doit être égal à "0" (zéro) si la commande a réussi (dans ton cas ça revient à dire que le grep a bien trouvé un "n" dans le nom du processus) ou égal à "1" (un) si la commande a échoué (pas de "n" dans le nom du processus).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour l'explication.
Et bien y'a du mieux ! J'ai lancé la commande avec une 15aine de noms et j'ai eu 3 réponses :
uxfw n'est pas en service
syslogd n'est pas en service
toto n'est pas en service
Pourtant quand je test uxfw, il le trouve bien :
$ ps -e | grep uxfw
20215 ? 15:54 uxfw
$ ps -e | grep sendmail
1936 ? 0:00 sendmail
$
C'est bizare quand même
Et bien y'a du mieux ! J'ai lancé la commande avec une 15aine de noms et j'ai eu 3 réponses :
uxfw n'est pas en service
syslogd n'est pas en service
toto n'est pas en service
Pourtant quand je test uxfw, il le trouve bien :
$ ps -e | grep uxfw
20215 ? 15:54 uxfw
$ ps -e | grep sendmail
1936 ? 0:00 sendmail
$
C'est bizare quand même
Lance ta ligne de commande en la faisant précéder de "set -xv;" et affiche le résultat...
PS. "set -" pour revenir à la normale
PS. "set -" pour revenir à la normale
Voilà :
$ set -xv ps -e | grep uxfw
set -xv ps -e | grep uxfw
+ grep uxfw
+ set -xv ps -e
$ set -xv ps -e | grep sendmail
set -xv ps -e | grep sendmail
+ grep sendmail
+ set -xv ps -e
$ set -xv ps -e | grep toto
set -xv ps -e | grep toto
+ grep toto
+ set -xv ps -e
$
$ set -xv ps -e | grep uxfw
set -xv ps -e | grep uxfw
+ grep uxfw
+ set -xv ps -e
$ set -xv ps -e | grep sendmail
set -xv ps -e | grep sendmail
+ grep sendmail
+ set -xv ps -e
$ set -xv ps -e | grep toto
set -xv ps -e | grep toto
+ grep toto
+ set -xv ps -e
$
$ set -xv ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do echo "$n" | grep 'n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
+ grep n
+ echo xntpd
+ 1> /dev/null
+ [ 0 = 1 ]
+ grep n
+ echo uxpwmgr
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxpwmgr
uxpwmgr
+ grep n
+ echo uxgpw
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxgpw
uxgpw
+ grep n
+ echo toto
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo toto
toto
+ grep n
+ echo uxfx
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxfx
uxfx
+ grep n
+ echo sendmail
+ 1> /dev/null
+ [ 0 = 1 ]
$
+ grep n
+ echo xntpd
+ 1> /dev/null
+ [ 0 = 1 ]
+ grep n
+ echo uxpwmgr
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxpwmgr
uxpwmgr
+ grep n
+ echo uxgpw
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxgpw
uxgpw
+ grep n
+ echo toto
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo toto
toto
+ grep n
+ echo uxfx
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxfx
uxfx
+ grep n
+ echo sendmail
+ 1> /dev/null
+ [ 0 = 1 ]
$
Et voici le résultat normal avec cette ligne de commande
$ for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do echo "$n" | grep 'n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
uxpwmgr n'est pas en service
uxgpw n'est pas en service
toto n'est pas en service
uxfx n'est pas en service
$
$ for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do echo "$n" | grep 'n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
uxpwmgr n'est pas en service
uxgpw n'est pas en service
toto n'est pas en service
uxfx n'est pas en service
$
Franchement merci pour ta patience !
$ set -xv ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do echo "$n" | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
+ grep $n
+ echo xntpd
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo xntpd
xntpd
+ grep $n
+ echo uxpwmgr
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxpwmgr
uxpwmgr
+ grep $n
+ echo uxgpw
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxgpw
uxgpw
+ grep $n
+ echo toto
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo toto
toto
+ grep $n
+ echo uxfx
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxfx
uxfx
+ grep $n
+ echo sendmail
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo sendmail
sendmail
$
et le résultat :
$ for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do echo "$n" | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
xntpd
uxpwmgr
uxgpw
toto
uxfx
sendmail
$ set -xv ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do echo "$n" | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
+ grep $n
+ echo xntpd
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo xntpd
xntpd
+ grep $n
+ echo uxpwmgr
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxpwmgr
uxpwmgr
+ grep $n
+ echo uxgpw
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxgpw
uxgpw
+ grep $n
+ echo toto
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo toto
toto
+ grep $n
+ echo uxfx
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxfx
uxfx
+ grep $n
+ echo sendmail
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo sendmail
sendmail
$
et le résultat :
$ for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do echo "$n" | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
xntpd
uxpwmgr
uxgpw
toto
uxfx
sendmail
$ set -xv ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do ps -e | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
set -xv ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do ps -e | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
+ set -xv
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo xntpd
xntpd
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxpwmgr
uxpwmgr
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxgpw
uxgpw
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo toto
toto
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxfx
uxfx
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo sendmail
sendmail
$ set - ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do ps -e | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
set - ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do ps -e | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
xntpd
uxpwmgr
uxgpw
toto
uxfx
sendmail
$
set -xv ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do ps -e | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
+ set -xv
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo xntpd
xntpd
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxpwmgr
uxpwmgr
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxgpw
uxgpw
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo toto
toto
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo uxfx
uxfx
+ grep $n
+ ps -e
+ 1> /dev/null
+ [ 1 = 1 ]
+ echo sendmail
sendmail
$ set - ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do ps -e | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
set - ; for n in xntpd uxpwmgr uxgpw toto uxfx sendmail ; do ps -e | grep '$n' >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done;
xntpd
uxpwmgr
uxgpw
toto
uxfx
sendmail
$
Effectivement y'a un os si tous ces processus tournent ;-((
Bon affiche :
Bon affiche :
ps -e | grep sendmail; echo $? ps -e | grep toto; echo $?
$ ps -e | grep sendmail; echo $?
1936 ? 0:00 sendmail
0
$ ps -e | grep toto; echo $?
1
$ ps -e | grep uxfw; echo $?
20215 ? 15:55 uxfw
0
$
J'ai mis uxfw car il était affiché et pourtant le process existe.
1936 ? 0:00 sendmail
0
$ ps -e | grep toto; echo $?
1
$ ps -e | grep uxfw; echo $?
20215 ? 15:55 uxfw
0
$
J'ai mis uxfw car il était affiché et pourtant le process existe.
Salut,
jipicy t'a déjà dit qu'il faut mettre "$n" et pas '$n'
Quand tu mets '$n' tu vas chercher un $ suivi d'un n est ce n'est pas ca que tu veux.
jipicy t'a déjà dit qu'il faut mettre "$n" et pas '$n'
Quand tu mets '$n' tu vas chercher un $ suivi d'un n est ce n'est pas ca que tu veux.
$ for n in nautil knotif bash kded gdm toto;do ps -e | grep "$n" >/dev/null; if [ "$?" = 0 ] ; then echo "$n" ; fi ; done; nautil knotif bash kded gdm $ for n in nautil knotif bash kded gdm toto;do ps -e | grep "$n" >/dev/null; if [ "$?" = 1 ] ; then echo "$n" ; fi ; done; toto