Bonjour,
Je recherche une fonction en PHP/SSH qui me permettrais de savoir si un screen est bien en cours d'éxécution.
Cela est-il possible ?
Bonjour,
Je recherche une fonction en PHP/SSH qui me permettrais de savoir si un screen est bien en cours d'éxécution.
Cela est-il possible ?
Ok. J'ai pas encore testé mais ça va pas tarder.
Donc tu cherches une fonction php pour t'indiquer si un truc est actif. Le problème, c'est que le php n'est pas exécuté par le client mais par le serveur Apache lui-même situé sur un host distant. Ainsi, si tu tapesdans une page html/php, tu verras apparaitre le nom de ton serveur lorsque tu chargeras ladite page depuis ton navigateur (et non pas le nom de ta machine)
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("<H1 align='center'>%s</h1>", system("uname -a"));
Donc déjà, aucune fonction php ne pourra informer le client de ce qu'il y a sur sa machine.
Peut-être veux-tu savoir si screen est en activité sur le serveur. Ben là, je connais pas tout ce qui existe dans php mais franchement ça m'étonnerait qu'il y ait un truc fait juste pour ça. Et donc ben tu peux en passer par une méthode traditionnelle qui ressemblera à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $fp=popen("ps -edf |grep -c screen"); if (read($fp, $data, 1024) > 0) { // Screen actif } else { // Screen inactif } close($fp);
C'est parce que j'ai tapé ça vite fait sans trop réfléchir.
En fait, le grep -c renvoie le nb de fois qu'il trouve l'info. Et s'il ne la trouve pas, il renvoie 0.
Or mon if ne teste pas ce qui est lu mais simplement si qqchose a été lu. Et "0" c'est déjà qqchose !!!
Ceci devrait mieux marcher (mais là encore je tape sans tester donc je te laisse le soin de comprendre l'idée et débugguer s'il faut)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $fp=popen("ps -edf |grep -c screen"); $data=""; read($fp, $data, 1024); if ($data != "0") { // Screen actif } else { // Screen inactif } close($fp);
J'ai toujours le chiffre 1 au minimum.
Exemple: si je met ps -edf |grep -c azerty ca me retourne 1 alors que le processus azerty n'existe pas...
EVIDEMMENT !!!
Tape "ps -edf |grep azerty" et tu verras ressortir la ligne... "grep azerty". En effet, la chaine "azerty" se trouve dans la commande "grep azerty" et est donc renvoyée.
PS: j'ai testé screen. Mais bon, en environnement graphique ça me convainc pas. Suffit de taper MAJ-Ctrl-T pour ouvrir une seconde fenêtre de travail alors aller m'embêter avec une simulation de multi-fenêtres alors que je peux avoir de vraies fenêtres indépendantes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part ps -edf |grep -v grep |grep -c screen
Eventuellement en environnement texte ça peut se faire si les 6 terminaux de base ne suffisent pas...
Je te remerci beaucoup, j'ai réussi a faire ce que je voulais
L'intéret de screen, c'est plutôt quand tu te connectes à distance. Ca te permet de fermer ta session, et de la récupérer sur un autre poste.PS: j'ai testé screen. Mais bon, en environnement graphique ça me convainc pas. Suffit de taper MAJ-Ctrl-T pour ouvrir une seconde fenêtre de travail alors aller m'embêter avec une simulation de multi-fenêtres alors que je peux avoir de vraies fenêtres indépendantes...
Eventuellement en environnement texte ça peut se faire si les 6 terminaux de base ne suffisent pas...
Tu peux aussi récupérer une sessions screen de qqn d'autre (comme un vnc mais en mode texte).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager