Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix > Solaris
Solaris Forum d'entraide sur le système Solaris.
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 07/05/2009, 11h03   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 137
Points : 32
Points : 32
Envoyer un message via MSN à spax
Par défaut Recuperer le PID d'un deamon sous Solaris

Bonjour ,
voici un problème qui me rend... J'ai un daemon en Perl et je voudrai créer un Watchdog sous Solaris . pour récupérer le PID du daemon j'utilise PGREP qui normalement renvoie le PID du processus a partir de son nom :

Code :
1
2
3
4
//en console :
pgrep -f dashboard 
// me renvoie ce qu'il me faut juste un pid de mon daemon
dans un fichier bash elle me renvoie deux pid , celui du deamon et le pid de la commande elle même :s est ce normal et comment y remédier.
voila mon script

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Find the pid of the process 

 if [ -e "${PIDFILE}" ]; 
    then FIND_PROC=`cat ${PIDFILE}` ;
    else 
    	FIND_PROC=`pgrep -f dashboard`;
 fi
 
	echo ${FIND_PROC};		
		

# if FIND_PROC is empty, the process has died; restart it

if [ -e ${FIND_PROC} ]; 
      then
      echo DASHBOARD failed at `date`
      ${DASHBOARD} start
      else
      echo DASHBOARD alive at `date`
      
fi
spax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2009, 12h55   #2
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 129
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 129
Points : 8 749
Points : 8 749
Bonjour,

N'etant pas certain de bien comprendre, peux-tu nous donner les resultats des commandes suivantes :

Code :
1
2
3
4
5
6
uname -a
zoneadm list
pgrep -f dashboard

ps -edf | grep <le premier pid>
ps -edf | grep <le second pid>
Merci
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2009, 14h06   #3
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 137
Points : 32
Points : 32
Envoyer un message via MSN à spax
Résolu

En fait j'avais appeler mon script dashboardWartchdog.sh
du coup au moment du pgrep dans ce script il trouver le PID du script lui même et le PID de mon daemon .
c'est con mais ça ma quand même fallu du temps pour me rendre compte :s
spax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2009, 14h31   #4
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 137
Points : 32
Points : 32
Envoyer un message via MSN à spax
finalement c'est pas resolu car maintenant le script me donne le resultat que je veut (watchdog) quand je le lance en ligne de commande mais une fois je le met en crontab

Code :
1
2
20 14 * * * /opt/rational/clearcase/etc/dashboard/watchdog.sh > /var/adm/rational/clearcase/log/dashboard/watch.log
il me trouve des PID que je trouve pas avec un ps -edf | grep PID

c'est quoi ce truc
spax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2009, 14h46   #5
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 137
Points : 32
Points : 32
Envoyer un message via MSN à spax
Quand le daemon est lancer ça marche bien.
mais quand il est arreté :

Code :
1
2
3
4
5
6
7
8
diva{mbakhti}68: cat watch.log 
26986 26989
DASHBOARD alive at Thu May 7 14:44:00 MEST 2009
diva{mbakhti}69: ps -edf | grep 26986
 mbakhti 27630 17948  0 14:44:53 pts/1    0:00 grep 26986
diva{mbakhti}70: ps -edf | grep 26989
 mbakhti 27638 17948  0 14:45:05 pts/1    0:00 grep 26989
Merci pour l'aide
spax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2009, 10h04   #6
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 129
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 129
Points : 8 749
Points : 8 749
Le probleme de grep, c'est qu'il se voit dans la liste des processus. Il suffit de le virer :

Code :
ps -edf | grep  <pid> | grep -v grep
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2009, 13h16   #7
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 912
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 912
Points : 1 263
Points : 1 263
Il y a plus simple:

jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2009, 10h47   #8
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 137
Points : 32
Points : 32
Envoyer un message via MSN à spax
Merci pour vos réponse mais le problème n'est toujours pas résolu :
en effet je remarque que toujours en utilisant appelant le shell script directement du terminal

#./watchdog.sh

le résultat est correct.

Mais avec le CRON

Code :
1
2
3
4
5
6
7
8
 if [ -e "${PIDFILE}" ]; 
    then 
    	FIND_PROC=`cat ${PIDFILE}` ;
    else 
    	#FIND_PROC=`pgrep -f dashboard`;
	 FIND_PROC=`ps -edf | grep dashboard | grep -v grep| awk '{print $2}'`;
 fi
j'ai 4 pid qui sont stocker dans ma variable : FIND_PROC . et qui sont les pid successifs dans commande ps -edf , grep dashboard ,grep -v grep et awk '{print $2}' et çà me rend vraiment dingue a force :s

Merci pour votre aide .
spax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2009, 14h11   #9
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 129
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 129
Points : 8 749
Points : 8 749
Bonjour,

Peux-tu coller ici ton script en entier, ou mieux un script minimum qui reproduise le meme probleme ?
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2009, 14h20   #10
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 137
Points : 32
Points : 32
Envoyer un message via MSN à spax
Voici mon script en entier :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash 
DASHBOARD=/etc/init.d/dashboard
PIDFILE=/opt/rational/clearcase/etc/dashboard/dashboard.pid

# Find the pid of the process 

 if [ -e "${PIDFILE}" ]; 
    then 
    	FIND_PROC=`cat ${PIDFILE}` ;
    else 
    	#FIND_PROC=`pgrep -f dashboard`;
	 FIND_PROC=`ps -edf | grep dashboard | grep -v grep| awk '{print $2}'`;
 fi	
	
	echo ${FIND_PROC};

# if FIND_PROC is empty, the process has died; restart it

if [ -e ${FIND_PROC} ]; 
      then
      echo DASHBOARD failed at `date`
      ${DASHBOARD} start
      else
      echo DASHBOARD alive at `date`
      
fi
Merci encore
spax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2009, 16h29   #11
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 912
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 912
Points : 1 263
Points : 1 263
Pourquoi as-tu commenté
Code :
#FIND_PROC=`pgrep -f dashboard`;
et continue-tu à utiliser "ps | grep | grep -v" ?
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2009, 16h50   #12
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 137
Points : 32
Points : 32
Envoyer un message via MSN à spax
Parce que en fait avec Pgrep j'ai aussi un PID de même si rle processus n'est pas UP . donc j'ai mis le ps ... juste pour voir que le script me retourne les PID des commande et non pas ce qu'il doit retourné (juste le PID du processus dashboard).
spax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2009, 08h58   #13
Membre actif
 
Inscription : août 2009
Messages : 152
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 152
Points : 181
Points : 181
Par défaut Cron se forke

Bonjour,
Attention, une commande lancée en cron se forke:

Si tu lance le script attente.sh suivant en cron:
Citation:
#!/bin/ksh
sleep 120
Tu récupère le résultat suivant en nombre de processus:
Citation:
=>236 /usr/sbin/cron
===>7401 sh -c /tmp/attente.sh
=====>7402 /bin/ksh /tmp/attente.sh
=======>7403 sleep 120
Cron commence par lancer la commande via un sh -c, et ensuite elle se retrouve exécutée mais dans ton contexte de ton script (ksh dans cet exemple).
50Nio 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 +1. Il est actuellement 03h22.


 
 
 
 
Partenaires

Hébergement Web