Tuer un processus ?

Résolu
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.

14 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
lami20j
 
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
lami20j
 
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
DieseL
 
Merci j'ai tout ce qu'il me fallait :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DieseL
 
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   Statut Modérateur Dernière intervention   4 896
 
Essaye avec "pgrep" plutôt...
0
DieseL
 
Sa me donne le même résultat
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
C'est le nom de l'utilisateur "etserver" ?

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

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