Re: Récupération de PID (bash/Solaris9)
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.os.unix ]
Sujet: Re: Récupération de PID (bash/Solaris9)
De: luse...@bougon.net.invalid (Loic Tortay)
Groupes: fr.comp.os.unix
Organisation: Bougon.Net
Date: 11. Apr 2008, 16:15:19
References: 1
|
Le 11 avril 2008 à 15:47:01 +0000 (UTC), JKB a écrit :
>
> 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.
>
S'il n'y a pas plusieurs instances du même programme :
pkill -15 -U $USER $EXE
ou
pkill -15 -U $USER -f ./$EXE
On peut donner des options de sélection précises et multiples à "pkill"
(et "pgrep"), par exemple :
pkill -15 -P1 -U $USER -o -f ./$EXE
pour envoyer le signal 15 au plus ancien processus ('-o') dont la ligne de
commande contient "./$EXE" ('-f ./$EXE'), fils de '1' (-P1) et lancé par
l'utilisateur $USER ('-U $USER' : dont le euid est $USER).
Il faut bien sûr être $USER ou "root" pour que cela fonctionne.
Pas de pipe ni de race-condition et ça fonctionne sous Linux, Solaris,
les *BSD libres et sans doute d'autres OS (quelques options comme '-o'
peuvent manquer, en particulier sur certains BSDs).
Loïc.

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|