[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: erreur avec ps -ef



Bonsoir,

Le 26/04/2014 17:14, François TOURDE a écrit :

>> Perso, j'ai ça :
>>
>> $ kill -9 $(ps -ef |grep mplayer |awk '{print $2}')
>> bash: kill: (7159) - No such process
>>
>> En l'occurrence, je comprends effectivement le message d'erreur
>> que j'ai ci-dessus.
>>
>> Par contre, je veux bien qu'on m'explique le message d'erreur
>> que le PO obtient. Car ce message d'erreur là, non, je ne le
>> comprends pas.
> 
> Il vient du fait que quand tu passes la commande suivante:
> 
>  ps -ef |grep mplayer |awk '{print $2}'
> 
> tu peux avoir 2 réponses: celle du process mplayer lui-même, et celle du
> process grep. 

Jusque là ok, j'avais bien conscience de cela.

> Du coup, le kill va s'adresser aussi au grep, et le tuer.

Alors là par contre, j'aimerais bien avoir un peu plus d'explication
si c'est possible. Il y a 2 choses que je ne pige pas.

1. Tu dis que le kill va s'adresser au grep mais déjà, pour moi, quand
on fait ça :

    kill -9 $(ps -ef |grep mplayer |awk '{print $2}')

j'ai du mal à imaginer que le « kill ... » soit lancé alors que
le $(...) n'a pas fini son exécution. Je me trompe peut-être mais
il me semble que, avant que la commande « kill ... » ne soit exécutée,
il faut bien que le $(...) aille à son terme pour la simple et bonne
raison que l'instruction « kill ... » ne sera connue qu'une fois
la commande $(...) terminée.

Je me trompe ?

2. Quand bien même, admettons que le timing que tu décris est le bon,
ie le kill s'adresse au grep (chose qui me semble impossible comme je
l'ai indiqué dans le 1), je ne vois toujours pas le rapport avec le
message d'erreur obtenu par le PO, à savoir :

Signal 18 (CONT) caught by ps (procps-ng version 3.3.9).
ps:display.c:66: please report this bug

La commande ps aurait donc attrapé le signal CONT qui est un signal
qui entraîne par défaut la reprise du processus si celui-ci est stoppé.
Quel rapport avec le fait que le kill aurait tué le grep ?

> Dans ton cas, la seule réponse est celle du grep, mais le kill n'a pas
> eu le temps de le tuer, il s'est fini avant.

Effectivement, le grep s'est terminé avant et pour moi ce sera toujours
le cas car, pour que l'instruction kill se lance, le $(...) doit d'abord
se finir (sans quoi l'instruction kill n'est pas encore connue et je ne
vois pas ce que l'os est en mesure d'exécuter). Évidemment, je serais
ravi d'avoir des explications là-dessus, surtout si je me plante (ce qui
n'est pas exclu du tout ;-)).

Bref, je conçois parfaitement le message d'erreur « bash: kill: (7159)
- No such process » car on cherche à tuer un process qui n'existe plus.
En revanche, le message d'erreur du PO reste encore pour moi un
mystère non résolu.


-- 
François Lafont


Reply to: