Tuer un processus ?
Résolu
DieseL
-
DieseL -
DieseL -
Bonjour,
Je travail actuellement sur une panel de gestion de serveur de jeux (Wolfenstein : ET), en php.
Dans ce manager, il est possible d'éteindre et de rallumer son serveur alloué. J'utilise la fonction ssh_exec(), avec laquelle je passe des commandes qui sert à administrer le serveur en question.
Cependant ma question ne relève pas de php, mais je cherche a savoir comment tuer un processus bien précis (éteindre le serveur en gros).
En effet, il y a plusieurs serveur du même jeux et les processus de ces serveurs ont le même nom, je ne peux donc pas faire un killall -9 name, sa fermerai les serveurs de mes autres clients.
Comment réussir alors a tuer tous les processus d'un user linux par exemple (chacun des serveurs de jeu est héberger dans le home d'un user que j'ai créer), ou de trouver le PID du processsus qui apartient au serveur de jeu, et ensuite de tuer tout en passant par du ssh.
Pour résumer: Comment trouver un PID et le fermer avec du ssh.
Je vous remercie d'avance pour vos réponses.
Je travail actuellement sur une panel de gestion de serveur de jeux (Wolfenstein : ET), en php.
Dans ce manager, il est possible d'éteindre et de rallumer son serveur alloué. J'utilise la fonction ssh_exec(), avec laquelle je passe des commandes qui sert à administrer le serveur en question.
Cependant ma question ne relève pas de php, mais je cherche a savoir comment tuer un processus bien précis (éteindre le serveur en gros).
En effet, il y a plusieurs serveur du même jeux et les processus de ces serveurs ont le même nom, je ne peux donc pas faire un killall -9 name, sa fermerai les serveurs de mes autres clients.
Comment réussir alors a tuer tous les processus d'un user linux par exemple (chacun des serveurs de jeu est héberger dans le home d'un user que j'ai créer), ou de trouver le PID du processsus qui apartient au serveur de jeu, et ensuite de tuer tout en passant par du ssh.
Pour résumer: Comment trouver un PID et le fermer avec du ssh.
Je vous remercie d'avance pour vos réponses.
Configuration: Windows Vista Firefox 3.5.7
14 réponses
-
Salut,
Normalement la commande :
ps -u $USER ou ps -U UID
Renvoie les processus (et leur PID) de l'utilisateur USER ou de son UID.
Parallèlement il existe les commandes "pgrep" et "pkill".
Donc pour toi, je suppose que :
pgrep -u $USER nom_serveur_de_jeu
devrait te renvoyer le PID désiré.
-
Salut,
En fait le retour de ssh2_exec c'est soit un flux si pas d'erreur soit FALSE.
Voici un test chez moi
lami20j@debian-vbox:~$ ssh 10.0.0.3 pgrep -u root apache2 lami20j@10.0.0.3's password: 2944 lami20j@debian-vbox:~$ cat test.php <? $connection = ssh2_connect('10.0.0.3', 22); ssh2_auth_password($connection, 'lami20j', 'a'); $commande = ssh2_exec($connection, 'pgrep -u root apache2'); stream_set_blocking($commande, true); $pid = stream_get_contents($commande); echo $pid; ?> lami20j@debian-vbox:~$ php test.php 2944 -
Re,
qu'est-ce qui va s'afficher ?
T'as pas eu la curiosité de voir ?!!! :-(lami20j@debian-vbox:~$ ssh 10.0.0.3 pgrep -u www-data apache2 lami20j@10.0.0.3's password: 2978 2979 2980 2981 2982 lami20j@debian-vbox:~$ cat test.php <? $connection = ssh2_connect('10.0.0.3', 22); ssh2_auth_password($connection, 'lami20j', 'a'); $commande = ssh2_exec($connection, 'pgrep -u www-data apache2'); stream_set_blocking($commande, true); $pid = stream_get_contents($commande); echo $pid; ?> lami20j@debian-vbox:~$ php test.php 2978 2979 2980 2981 2982 -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re,
J'ai utiliser ceci:
ps -u etserver(user)
Il me renvoi un message de la forme:
Resource id #7
Qu'est-ce que c'est ?
Comment tuer le processus avec ce que php m'a retourné ? -
-
C'est le nom de l'utilisateur "etserver" ?
Tu lances la commande depuis un terminal ?
C'est quoi comme système d'installé ?
-
-
OS: Debian lenny (dernière distrib)
Je me connecte en root pour les fonctions ssh2, etserver est l'user dans lequel j'ai installé le serveur de jeu.
En règle général je ne me connecte que par ssh via putty, je n'ai pas accès au bureau graphique.
Mon code php:
$connection = ssh2_connect('87.98.141.73', 22);
ssh2_auth_password($connection, 'root', '******');
$commande = ssh2_exec($connection, 'pgrep -u etserver etded.x86');
echo $commande;
(je viens de retenter, j'ai obtenu Resource id #6 )
Je présice que pour allumer le serveur j'utilise la méthode screen. ( si sa peut aider) -
Et la même commande directement dans un terminal (putty) ça donne quoi ?
-
-
-
Re,
Oui, c'est apache2.
Il y a le processus père qui appartient à root et d'autres fils pour l'utilisateur www-data (c'est le 2ème exemple).
Bref, si tu as plusieurs processus il va afficher les pids de tous les processus. -
Je te remercie, une fois que j'aurais réinstaller l'os (héhé ai laissé le pass dans mon code) et réinstaller apache php5 la bibrairessh2 ... enfin bref tout, je te dirais si mon objectif de terminer le processus a réussi ;)