Récupération de PID (bash/Solaris9)

Le
JKB
Bonjour à tous,

J'ai un petit problème Je dois modifier un script de lancement
(dans /etc/init.d) que j'ai écrit il y a quelque temps. La machine
tourne sous Solaris 9 et ce script comporte une ligne du type :

/usr/bin/su - $USER -c "(cd $DIR; ./$EXE > $0.log 2>&1 &)"

Je change d'utilisateur, je passe dans le répertoire DIR pour lancer
l'exécutables java EXE et rediriger ses sorties dans un fichier log.
Le problème : pour tuer le daemon, j'envoie un kill -15 qui est géré
par le daemon en question. Sauf que ps -eaf ne donne que le début de
la ligne de commande donc, ça coince à u nmoment où à un autre.
J'aimerais donc pouvoir récupérer le PID du processus détaché par
cette fameuse ligne de commande, mais je n'y arrive pas. Si je colle
un echo $! juste après elle, $! ne contient rien, forcément, la
commande est détachée par un su ! J'ai essayé de coller un echo
$! dans le su, mais là encore, cela ne renvoie rien. D'où la
question à 100 balles : comment récupérer ce #[||{[|~{[#(' d'ID de
processus dans une telle configuration ?

Merci de vos lumières,

JKB, qui sèche depuis quelques heures

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Vos réponses Page 2 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JKB
Le #2856651
Le 11-04-2008, à propos de
Re: Récupération de PID (bash/Solaris9),
Thierry B. écrivait dans fr.comp.os.unix :
--{ JKB a plopé ceci: }--

/usr/bin/su - $USER -c "(cd $DIR; ./$EXE > $0.log 2>&1 &
echo $! > /var/run/pid.machin

)"


Euh, ça le fait pas un truc comme ça ?


Naon... Tu me connais, c'est le premier truc que j'ai essayé...
Comme le processus est lancé avec les droits de $USER, tu ne peux
pas écrire dans /var/run.


Ben alors faut écrire dans le home de $USER. Il doit forcément
exister un truc shell pour récupérer le path vers son home, non ?
Genre un petit coup de awk sur /etc/passwd... Ah mince, non, comme
tu es total complexe, faut probablement parser la sortie de ypcat
ou un truc du même genre...


Pas possible. La machine est hors NIS parce que Solaris9 n'est pas
capable d'utiliser les MD5. Donc NIS pour Linux et NetBSD (avec le
patch que j'ai posté sur fr.comp.os.bsd) et Solaris seul dans son
coin. de toute façon, Solaris9 (pas testé avec le 10) se comporte
tellement mal avec les sessions distantes X (problèmes de fontes)
que cela n'est pas vraiment utile.

J'aime assez le signal 42... ;-)


En fait, c'est pas POSIX, mais ça permet de controler la
génération des improbabilités.


L'utilité d'improbabilité est la conformité POSIX pour Solaris. Bon,
je sais, poussez pas, je suis déjà dehors ;-)

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.




Cyrille Lefevre
Le #2869611
Le 11-04-2008, à propos de
Re: Récupération de PID (bash/Solaris9),
Marc écrivait dans fr.comp.os.unix :
JKB wrote:
Je change d'utilisateur, je passe dans le répertoire DIR pour lanc er
l'exécutables java EXE et rediriger ses sorties dans un fichier lo g.
Le problème : pour tuer le daemon, j'envoie un kill -15 qui est gé ré
par le daemon en question. Sauf que ps -eaf ne donne que le début de
la ligne de commande donc, ça coince à u nmoment où à un aut re.
Il me semble qu'il y a pargs pour avoir tous les arguments (sinon

/usr/ucb/ps marche très bien aussi).


Non, il tronque aussi les lignes...


Hi, Bonjour,

essaye avec ps aguxww | grep ...

note les ww

Regards, Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.



JKB
Le #2871031
Le 12-04-2008, à propos de
Re: Récupération de PID (bash/Solaris9),
Cyrille Lefevre écrivait dans fr.comp.os.unix :
Le 11-04-2008, à propos de
Re: Récupération de PID (bash/Solaris9),
Marc écrivait dans fr.comp.os.unix :
JKB wrote:
Je change d'utilisateur, je passe dans le répertoire DIR pour lancer
l'exécutables java EXE et rediriger ses sorties dans un fichier log.
Le problème : pour tuer le daemon, j'envoie un kill -15 qui est géré
par le daemon en question. Sauf que ps -eaf ne donne que le début de
la ligne de commande donc, ça coince à u nmoment où à un autre.
Il me semble qu'il y a pargs pour avoir tous les arguments (sinon

/usr/ucb/ps marche très bien aussi).


Non, il tronque aussi les lignes...


Hi, Bonjour,

essaye avec ps aguxww | grep ...

note les ww


Merci, je ne connaissais pas.

Cordialement,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.




Marc
Le #3359101
JKB wrote:

Il me semble qu'il y a pargs pour avoir tous les arguments (sinon
/usr/ucb/ps marche très bien aussi).


Non, il tronque aussi les lignes...


Mais il a une option pour ne pas le faire.

J'aimerais donc pouvoir récupérer le PID du processus détaché par
cette fameuse ligne de commande, mais je n'y arrive pas. Si je colle
un echo $! juste après elle, $! ne contient rien, forcément, la
commande est détachée par un su !... J'ai essayé de coller un echo
$! dans le su, mais là encore, cela ne renvoie rien. D'où la


Le $! était-il bien protégé ? Chez moi ça marche s'il est entre ''.


J'ai essayé aussi sans succès...


Ça m'étonne. echo $! (essayer peut-être avec plus de devant le $ ou
devant le ! selon le shell) placé dans le su devrait vraiment marcher.



Publicité
Poster une réponse
Anonyme