Killall -r

Bonjour,

je tente de faire désespérément un killall -r:

killall -KILL -r ‘./murmur.x86 -ini 0f759dd1ea6c4c76cedc299039ca4f23_aab63bd1fb124e7c677c584b61f165ee.ini’

./murmur.x86 -ini 0f759dd1ea6c4c76cedc299039ca4f23_aab63bd1fb124e7c677c584b61f165ee.ini: aucun processus trouv?

Le processus je le copie directement de htop, mais il ne le trouve pas…

Merci de votre aide.

killall ne prend pas en compte les arguments de la commande, seulement la commande elle-même (qui, dans ton cas, est murmur.x86).

D’accord, comment je peut faire alors?

il faut que je passe par les grep, je peut récupérer le PID et fait un kill PID peut être?

Que me conseillez vous pour que ce soit le plus simple possible?

Merci.

Ou un “killall murmur.x86” (sans les arguments de murmur) si tu ne veux pas te compliquer la vie.

Le problème c’est que j’ai plusieurs serveurs, et je ne veut pas tous les fermés.

Dans ce cas :

Un simple “top | grep murmur.x86” pour repérer l’identifiant de ton processus, suivi d’un “kill PID”, suivi si nécessaire d’un “kill -9 PID”.

Si j’ai bien compris, il veut pouvoir distinguer ses process en fonction de leurs arguments. top ne convient donc pas (en tous cas pas sans options supplémentaires pour modifier l’affichage).

ps ax -o pid,cmd me paraît plus adapté.

Attention toutefois à ce comportement classique, il faut penser à éliminer le grep du résultat :

$ ps ax -o pid,cmd | grep kdm 1631 /usr/bin/kdm 4244 grep --color=auto kdm $ ps ax -o pid,cmd | grep kdm | grep -vE '^ +[0-9]+ +grep ' 1631 /usr/bin/kdm
Au final ça donne :

Si j’ai bien compris, il veut pouvoir distinguer ses process en fonction de leurs arguments. top ne convient donc pas (en tous cas pas sans options supplémentaires pour modifier l’affichage).[/quote]
Ah oui, en effet…
Faut dire que je ne m’en sers pas assez souvent : à croire que Squeeze refuse de planter malgré tout ce que je lui fais subir…

Je ne cache pas que je suis impressionné par cette ligne, mais ne serait-il pas plus simple de se contenter de :

ps ax -o pid,cmd | grep processus kill PID kill -9 PID
Au moins on y passe moins de temps à chercher la faute de frappe…

[quote=“vv222”]ne serait-il pas plus simple de se contenter de :

ps ax -o pid,cmd | grep processus kill PID kill -9 PID[/quote]
En l’état dans un script ça ne fonctionne pas. C’est quoi “PID” ? Tu le récupères comment ?
À moins que tu ne partes du principe qu’il tape ça manuellement dans un terminal ? (alors que bien évidemment je pars du principe qu’il veut en faire un script :wink:)

Bon après c’est peut-être moi, hein, mais quand l’élaboration d’une commande m’oblige à aller regarder dans le manuel (franchement, rien que le ps ax -o pid,cmd c’est pas le genre de choses que je retiens, même sans parler du reste) alors cette commande est un excellent candidat pour finir sa vie dans un script.

Sinon je viens de me rappeler l’existence des commandes pgrep / pkill (paquet procps). pkill devrait faire l’affaire en utilisant son option -f (mais tester d’abord le motif de recherche avec pgrep), ça évite de réinventer la roue. :blush:

Merci pour vos réponses, j’ai supposé que c’est le MOTIF qu’il faut remplacer:

root@sd-36147:~# kill $(ps ax -o pid,cmd | grep ./murmur.x86 -ini 0f759dd1ea6c4c76cedc299039ca4f23_705bf9f144b092cd7daa8d372e455922.ini | grep -vE '^ +[0-9]+ +grep ' | sed 's@^ \+\([0-9]\+\) \+.*$@\1@g') grep: 0f759dd1ea6c4c76cedc299039ca4f23_705bf9f144b092cd7daa8d372e455922.ini: Aucun fichier ou dossier de ce type kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

Mais j’ai une solution peut être plus simple (même si je ne l’aime pas):

créé un ./murmur.x86 avec un nom différent pour chaque serveur, comme ça un kill all fonctionnera et ne coupera pas tous mes serveurs.

[quote=“canaillou2k5”]Merci pour vos réponses, j’ai supposé que c’est le MOTIF qu’il faut remplacer:

root@sd-36147:~# kill $(ps ax -o pid,cmd | grep ./murmur.x86 -ini 0f759dd1ea6c4c76cedc299039ca4f23_705bf9f144b092cd7daa8d372e455922.ini | grep -vE '^ +[0-9]+ +grep ' | sed 's@^ \+\([0-9]\+\) \+.*$@\1@g') grep: 0f759dd1ea6c4c76cedc299039ca4f23_705bf9f144b092cd7daa8d372e455922.ini: Aucun fichier ou dossier de ce type kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec][/quote]
Oui c’est bien MOTIF qu’il faut remplacer. Cela dit, faut aussi respecter la syntaxe de grep (à savoir un seul motif de recherche), donc mettre ce que tu cherches entre guillemets.
Et comme tu cherches une chaîne fixe et non une expression régulière, profites-en pour utiliser l’option -F de grep :

Cela dit, as-tu regardé comme je te l’ai suggéré les commandes pgrep / pkill qui sont beaucoup plus simples ?

[quote=“canaillou2k5”]Mais j’ai une solution peut être plus simple (même si je ne l’aime pas):

créé un ./murmur.x86 avec un nom différent pour chaque serveur, comme ça un kill all fonctionnera et ne coupera pas tous mes serveurs.[/quote]
Tu ne l’aimes pas ?
Je trouve ça particulièrement élégant pourtant…