PDA

Afficher la version complète : Script: tuer_proc



abgech
06/08/2007, 17h05
Ce petit script, sans prétention, permet de visualiser les processus et leur PID, puis de d'en tuer un ou plusieurs.

Nom du script:

tuer_proc

Utilisation du script, dans une console, taper le nom du script:

tuer_proc

Commentaire:
Attention, sous root, le script est capable de tuer n'importe quel processus (sauf init, PID 1). Dans ce cas, à utiliser avec circonspection !

Code du script:

#---------------------------
# tuer_proc: |
# SUPPRESSION D'UN PROCESS |
#---------------------------
ps ax --sort=tty,pid | more
echo 'VEUILLEZ TAPER LE(S) "PID" DU(DES) PROCESS A TUER: '
read PROCESS
for TRUC in $PROCESS; do
kill -9 $TRUC
done

debianSarge
07/08/2007, 13h38
Et sinon tu fais `top` et tu peux faire plein de trucs pour gérer tes processus http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif
Bonne initiative tout de même.

Par contre pour ceux qui ne sont pas habitués aux scripts shel n'oublie pas de rajouter la ligne de shebang et d'expliquer le chmod +x pour rendre le script directement exécutable.

A+

zesamoth
09/08/2007, 09h23
Salux !

Moi aussi j'avais un jour pensé à ce genre de script.

Le tiens répond tout à fait à la problématique mais peut-être y a t-il moyen de l'améliorer encore, je m'explique:

Ce que je voulais moi c'est un script un peu différent orienté plutôt utilisateur et enventuellement graphique. Pourquoi pas en python.... bien sur pour le coup on sort d'Aliobash.

Ce serait donc un script qui permettrait d'entrer directement le nom du programme à tuer. Les contraintes seraient :

- Grâce au nom, récupération du PID ( avec une commande ps aux | grep $ classique et un coup de cut)
- Récupération du propriétaire du process (toujours avec ps et cut)
- Impossibilité de tuer des process ne nous appartenant pas dont en particulier les process root
- Distinction des process puisque la commande ps aux | grep peut ramener un ccertain nombre de lignes
- Et enfin mise à mort du process (Barbares !!! http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif )

Ah oui j'y pense, je ne remet pas du tout en cause ton boulot, il servira d'ailleurs pour mon script lorsque j'aurais récupérer le PID du process. En fait mon script serait une surcouche du tiens.
Bonne initiative comme le dis JH@CKtheRipper (pas facile d'écrire ton pseudo, tu rajoutes quelques chiffres et ça te fait un mdp sacrément balèze à cracker http://www.alionet.org/style_emoticons/<#EMO_DIR#>/laugh.gif)

@+

Heero_Yuy
09/08/2007, 10h41
Pourquoi pas en python.... bien sur pour le coup on sort d'Aliobash.[/b]

Contrairement à ce que laisse croire le nom Aliobash, tous les scripts - Python, Shell ... - sont acceptés http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif

Aliobash n'est qu'un nom, ça ne veut pas dire que l'on se contentera uniquement du bash, bien au contraire.

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

<div class='quotetop'>Citation (zesamoth @ 9/08/2007 à 9:23) <{POST_SNAPBACK}> (index.php?act=findpost&pid=146611)</div>
Ce serait donc un script qui permettrait d'entrer directement le nom du programme à tuer. Les contraintes seraient :

- Grâce au nom, récupération du PID ( avec une commande ps aux | grep $ classique et un coup de cut)
- Récupération du propriétaire du process (toujours avec ps et cut)
- Impossibilité de tuer des process ne nous appartenant pas dont en particulier les process root
- Distinction des process puisque la commande ps aux | grep peut ramener un ccertain nombre de lignes
- Et enfin mise à mort du process (Barbares !!! http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif )[/b]

Si tu ne veux killer que les processus appartenant à l'user en activité sur la machine, il suffit peut-être de n'utiliser que :

ps ux | grep $ ...

pour éviter ainsi d'avoir à rechercher les processus de l'user actuel http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif

D'ailleurs, il me semble qu'un user ne peut pas killer les processus appartenant à un autre user, mais je peux me tromper.

Pour ce qui est de l'interface graphique, tu peux aussi voir du côté de Zenity (http://www.linuxmanpages.com/man1/zenity.1.php) http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif

zesamoth
09/08/2007, 10h53
<div class='quotetop'>Citation </div>
Si tu ne veux killer que les processus appartenant à l'user en activité sur la machine, il suffit peut-être de n'utiliser que :

ps ux | grep $ ...

pour éviter ainsi d'avoir à rechercher les processus de l'user actuel http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif

D'ailleurs, il me semble qu'un user ne peut pas killer les processus appartenant à un autre user, mais je peux me tromper.

Pour ce qui est de l'interface graphique, tu peux aussi voir du côté de Zenity (http://www.linuxmanpages.com/man1/zenity.1.php) http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif[/b]

Effectivement c'est pas bête pour le coup du ps ux, j'ai tellement l'habitude de faire mes traitements en python que j'en oubli les commandes linux qui permettent de se simplifier la vie http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

Ensuite tu as raison un utilisateur ne peut pas tuer des process ne lui appartenant pas.

Enfin Zenity à l'air pas mal, moi j'ai l'habitude de faire du pyGtk mais autant Gtk est libre autant pyGtk ne l'est pas (d'après un formateur....j'ai pas vérifié l'info) et puis le pyGtk oblige à rajouter des dépendances, c'est dommage....

Heero_Yuy
09/08/2007, 11h53
Effectivement c'est pas bête pour le coup du ps ux, j'ai tellement l'habitude de faire mes traitements en python que j'en oubli les commandes linux qui permettent de se simplifier la vie http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif[/b]

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif Quand on a l'habitude avec quelque chose, on ne pense pas toujours au plus simple http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif

<div class='quotetop'>Citation (zesamoth @ 9/08/2007 à 10:53) <{POST_SNAPBACK}> (index.php?act=findpost&pid=146625)</div>
Ensuite tu as raison un utilisateur ne peut pas tuer des process ne lui appartenant pas.[/b]

Ca me rassure dans l'idée que je ne dis pas toujours des con*****s http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

<div class='quotetop'>Citation (zesamoth @ 9/08/2007 à 10:53) <{POST_SNAPBACK}> (index.php?act=findpost&pid=146625)</div>
Enfin Zenity à l'air pas mal, moi j'ai l'habitude de faire du pyGtk mais autant Gtk est libre autant pyGtk ne l'est pas (d'après un formateur....j'ai pas vérifié l'info) et puis le pyGtk oblige à rajouter des dépendances, c'est dommage....[/b]

Je ne connais pas pyGTK, je ne pourrais donc pas en dire grand chose. Sinon, tu diras à ton formateur qu'il ferait mieux de revoir sa position sur pyGTK :

<div class='quotetop'>Citation </div>
PyGTK is free software, so you can use, modify, distribute and study it with very few restrictions (LGPL license).[/b]

Source : pyGTK.org (http://www.pygtk.org/)


C'est libre mais avec quand même des restrictions. Faut voir ce que limite la LGPL par rapport à la GPL classique http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif

Copernicus_ThebigNewbie
09/08/2007, 12h03
Ne pas oublier la commande pkill <application> qui permet de killer un application sans devoir connaitre son PID .... http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

pkill firefox (par exemple)

zesamoth
09/08/2007, 13h49
Arghhh http://www.alionet.org/style_emoticons/<#EMO_DIR#>/blink.gif

Je ne connaissais pas cette commande !!
Tout le projet fout le camp !
Copernicus briseur d'illusions ! http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif

Enfin...on peut toujours "graphiquer" cette commande

Copernicus_ThebigNewbie
09/08/2007, 16h18
Sous KDE: ctrl-alt-esc là une tête de mort apparrait et il suffit de clicker sur l'application que vous voulez killer http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

Heero_Yuy
09/08/2007, 16h24
Certes différentes techniques existent pour killer un processus récalcitrant, et vous trouverez dans le numéro de Juillet/Août de Linux+ une astuce - écrite par votre serviteur http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif - consacrée à ces méthodes (kill, xkill, [Ctrl]+[Alt]+[Esc]), mais ce n'est pas une raison pour vous décourager à écrire un script http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif

C'est pas parce que les outils existent, qu'il ne faut pas en développer d'autres qui correspondent à nos besoins http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif

Sur ce, à bon entendeur http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

zesamoth
09/08/2007, 21h07
Sous KDE: ctrl-alt-esc là une tête de mort apparrait et il suffit de clicker sur l'application que vous voulez killer http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif[/b]

Tu l'fais exprès ou quoi ??? http://www.alionet.org/style_emoticons/<#EMO_DIR#>/laugh.gifhttp://www.alionet.org/style_emoticons/<#EMO_DIR#>/laugh.gifhttp://www.alionet.org/style_emoticons/<#EMO_DIR#>/laugh.gif


[Edité par angel59 : Suppression du doublon http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif ]

tyrtamos
10/08/2007, 17h32
Bonjour,

Merci pour les solutions en console.

Je crois aussi que "killall" permet de tuer un processus en donnant son nom et pas son PID.

Sous KDE, je préfère: menu -> système -> moniteur -> surveillance du système -> onglet "table des processus". En plus, il y a possibilité de faire apparaître l'arbre des dépendances de chaque processus (cocher la case "arborescence"), ce qui permet de ne pas faire de bétise trop grosse. Par exemple de tuer le processus "init" http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif .

Tyrtamos

Temet
11/08/2007, 14h29
Si je puis me permettre, le "-9" est barbare.
Sans le "-9", le kill va essayer de fermer proprement le processus, libérer la mémoire, tout ça. Avec le "-9", bah non! ^^

EDIT : oui, "killall app" marche bien (je ne connaissais pas "pkill" http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif)

abgech
12/08/2007, 10h54
... Ce que je voulais moi c'est un script un peu différent orienté plutôt utilisateur et enventuellement graphique. Pourquoi pas en python.... bien sur pour le coup on sort d'Aliobash.
...[/b]
Puis-je te rappeler que j'ai écrit:
Ce petit script, sans prétention, permet de visualiser les processus et leur PID, puis de d'en tuer un ou plusieurs.



<div class='quotetop'>Citation (angel59 @ 9/08/2007 à 10:41) <{POST_SNAPBACK}> (index.php?act=findpost&pid=146622)</div>
...
Si tu ne veux killer que les processus appartenant à l'user en activité sur la machine, il suffit peut-être de n'utiliser que :

ps ux | grep $ ...

pour éviter ainsi d'avoir à rechercher les processus de l'user actuel http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif
...[/b]

C'est un script que j'ai écrit pour mon usage personnel, je l'utilise en root, pour pouvoir tuer un peu n'importe quoi. Lorsque je développe, j'ai toujours une console en root pour ce genre d'usage.



<div class='quotetop'>Citation (Temet @ 11/08/2007 à 14:29) <{POST_SNAPBACK}> (index.php?act=findpost&pid=146888)</div>
Si je puis me permettre, le "-9" est barbare.[/b]
Oh que non ! Le -9 n'est pas barbare, il est au contraire indispensable !

Par défaut, la commande kill envoie le signal 15 (SIGTERM, Termination (ANSI)), le processus visé peut avoir capturé ou bloqué ce signal (c'est le cas de la quasi totalité des programmes temps réel, domaine dans lequel je fait http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif ) et dans ce cas la commande est inopérante. Par contre le signal -9 (SIGKILL, Kill unblockable (POSIX)) n'est pas capturable ou bloquable, la commande agit dans tous les cas, sauf init, (PID 1), mais je ne vois pas vraiment la raison de vouloir tuer init(), shutdown me paraît préférable http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif .

Au surplus, voir:
man 1 kill pour des détails sur la commande kill.
man 2 kill pour des détails sur l'appel système invoqué par la commande kill.

zesamoth
13/08/2007, 19h30
Puis-je te rappeler que j'ai écrit:
Ce petit script, sans prétention, permet de visualiser les processus et leur PID, puis de d'en tuer un ou plusieurs.[/b]

Mais bien sur que tu peux le rappeler !! http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif
C'est juste que c'était un petit projet dont j'avais eu l'idée il ya quelque temps et j'ai profité de ton post pour sauter sur l'occasion.
MAis les réponses qui ont été apportées après m'ont démontrées que mon projet n'avait plus trop d'intérêt.... http://www.alionet.org/style_emoticons/<#EMO_DIR#>/laugh.gif ANgel 59 à raison en disant que ce n'est pas parce queqlque chose existe qu'il faut s'empecher de dév (surtout pour s'entrainer comme moi http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif ). Mais je préfère faire quelque chose d'inexistant. Comprenez par là que je n'ai pas la prétention d'égaler les développeurs de KDE et linux http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif

Temet
13/08/2007, 23h23
T'en fais pas, j'ai aussi fait ma petite applet Kicker sous KDE.
Ce n'est certainement pas le code le plus propre du monde, mais je m'en tire avec un honorable 80% sur KDE-apps et je suis content http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

Bref, lance toi mon grand http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif