Tuer un processus ?

Résolu/Fermé
DieseL - 20 janv. 2010 à 17:21
 DieseL - 20 janv. 2010 à 22:05
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.

14 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
20 janv. 2010 à 17:49
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é.
2
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
1
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
1
Merci j'ai tout ce qu'il me fallait :)
0

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é ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
20 janv. 2010 à 20:03
Essaye avec "pgrep" plutôt...
0
Sa me donne le même résultat
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
20 janv. 2010 à 20:50
C'est le nom de l'utilisateur "etserver" ?

Tu lances la commande depuis un terminal ?
C'est quoi comme système d'installé ?
0
Salut,

Affiche ton code php.
0
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)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
20 janv. 2010 à 21:24
Et la même commande directement dans un terminal (putty) ça donne quoi ?
0
Hey mince vais etre obligé de changer mon pass du serveur dédié --'
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
20 janv. 2010 à 21:58
J'ai sucré le post précédent à cause de l'IP et du mot de passe en clair ;-((
0
Dans ton cas tu avais apache2 d'éxecuté si je comprend bien ?
0
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.
0
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 ;)
0