Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 21/11/2012, à 23:30

corgato

Nohup ne fonctionne pas...

Bonsoir,

je n'arrive pas a créer un script qui me permet de mettre à jour mon serveur de jeu...
Enfaite des que je met la commande nohup ça ne fonctionne pas... Et j'en ai besoin, sinon la commande se kill quand je ferme la connexion ssh...
Auriez vous une idée smile ?

#!/bin/bash
nohup cd /games/ && STEAMEXE=steamcmd ./steam.sh +login MON_LOGIN MON_MDP +force_install_dir /games/kl +app_update 215360 +exit && cd /games/kl && chmod 0777 -R . >> nohup.out 2>> nohup.out &

Merci, et bonne soirée !

Hors ligne

#2 Le 21/11/2012, à 23:47

Postmortem

Re : Nohup ne fonctionne pas...

Salut,
Essaie de mettre ta commande dans un script, sans le nohup.
Puis tu lances le script avec nohup.
C'est juste une idée comme ça !


Trusty Tahr (64 bits), Athlon64 3800+, ATI Radeon HD4870

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#3 Le 22/11/2012, à 07:59

Totor

Re : Nohup ne fonctionne pas...

Rien d'anormal à ce que cela ne fonctionne pas ...
Seule la partie cd /games/ est appliquée dans le contexte du nohup...

+1 pour Postmortem, sinon une altérnative : utiliser screen

Dernière modification par Totor (Le 22/11/2012, à 08:00)


-- Lucid Lynx --

Hors ligne

#4 Le 22/11/2012, à 11:01

corgato

Re : Nohup ne fonctionne pas...

Quand je le mets dans un fichier sans le nohup, et l'exécute manuellement sa fonctionne très bien.
Mais comme je dois l'exécuter automatiquement via un PHP, grâce à la lib ssh2, ça pose problème vu que la connexion se referme directement après du coup la commande se kill.

Et ce n'est pas possible de faire ça justement avec nohup mais en prenant en compte toutes la ligne ?

Hors ligne

#5 Le 22/11/2012, à 11:13

Postmortem

Re : Nohup ne fonctionne pas...

Il faudrait que tu montres comment tu l'appelles via php... Perso, j'y connais rien en php mais ça donnera plus d'indications à ceux qui connaissent pour t'aider.


Trusty Tahr (64 bits), Athlon64 3800+, ATI Radeon HD4870

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#6 Le 22/11/2012, à 11:25

corgato

Re : Nohup ne fonctionne pas...

Je l'appelles via SSH2 :

<?php
if($connexion = @ssh2_connect($donnees['serveur_ip'], $donnees['serveur_port']))
{
	if(@ssh2_auth_password($connexion, $donnees['serveur_login'], decode_mdp_serveur($donnees['serveur_pass'])))
	{
		$cmd1 = "cd /".$donnees['serveur_dossier']."/ && STEAMEXE=steamcmd ./steam.sh +login MON_LOGIN MON_MDP +force_install_dir ".$donnees['repertoire']." +app_update 215360 +exit && cd ".$donnees['repertoire']." && chmod 0777 -R .";

		$commande = "#!/bin/bash\nnohup ".$cmd1." >> nohup.out 2>> nohup.out &\n";
		$stream = ssh2_exec($connexion, "cd /".$donnees['serveur_dossier']." && echo '".$commande."' > /".$donnees['serveur_dossier']."/fichier_commande/script_".$id_commande.".sh && chmod 755 /".$donnees['serveur_dossier']."/fichier_commande/script_".$id_commande.".sh && ./".$donnees['serveur_dossier']."/fichier_commande/script_".$id_commande.".sh");
		stream_set_blocking($stream, false);
		$output = stream_get_contents($stream);

		sleep(10);

		return '<br />Mise à jour du Serveur En cours !';
	}
	else
		return 'Erreur Authentification';
	}
else
	return 'Erreur Connexion';

Dernière modification par corgato (Le 22/11/2012, à 11:25)

Hors ligne

#7 Le 22/11/2012, à 12:01

Postmortem

Re : Nohup ne fonctionne pas...

corgato a écrit :

Je l'appelles via SSH2 :

<?php
if($connexion = @ssh2_connect($donnees['serveur_ip'], $donnees['serveur_port']))
{
	if(@ssh2_auth_password($connexion, $donnees['serveur_login'], decode_mdp_serveur($donnees['serveur_pass'])))
	{
		$cmd1 = "cd /".$donnees['serveur_dossier']."/ && STEAMEXE=steamcmd ./steam.sh +login MON_LOGIN MON_MDP +force_install_dir ".$donnees['repertoire']." +app_update 215360 +exit && cd ".$donnees['repertoire']." && chmod 0777 -R .";

		$commande = "#!/bin/bash\nnohup ".$cmd1." >> nohup.out 2>> nohup.out &\n";
		$stream = ssh2_exec($connexion, "cd /".$donnees['serveur_dossier']." && echo '".$commande."' > /".$donnees['serveur_dossier']."/fichier_commande/script_".$id_commande.".sh && chmod 755 /".$donnees['serveur_dossier']."/fichier_commande/script_".$id_commande.".sh && ./".$donnees['serveur_dossier']."/fichier_commande/script_".$id_commande.".sh");
		stream_set_blocking($stream, false);
		$output = stream_get_contents($stream);

		sleep(10);

		return '<br />Mise à jour du Serveur En cours !';
	}
	else
		return 'Erreur Authentification';
	}
else
	return 'Erreur Connexion';

Comme je te disais, je connais pas php mais est-ce que ceci fonctionnerait ??

<?php
if($connexion = @ssh2_connect($donnees['serveur_ip'], $donnees['serveur_port']))
{
	if(@ssh2_auth_password($connexion, $donnees['serveur_login'], decode_mdp_serveur($donnees['serveur_pass'])))
	{
		$cmd1 = "cd /".$donnees['serveur_dossier']."/ && STEAMEXE=steamcmd ./steam.sh +login MON_LOGIN MON_MDP +force_install_dir ".$donnees['repertoire']." +app_update 215360 +exit && cd ".$donnees['repertoire']." && chmod 0777 -R .";

		$commande = "#!/bin/bash\n".$cmd1."\n";
		$stream = ssh2_exec($connexion, "cd /".$donnees['serveur_dossier']." && echo '".$commande."' > /".$donnees['serveur_dossier']."/fichier_commande/script_".$id_commande.".sh && chmod 755 /".$donnees['serveur_dossier']."/fichier_commande/script_".$id_commande.".sh && nohup ./".$donnees['serveur_dossier']."/fichier_commande/script_".$id_commande.".sh &");
		stream_set_blocking($stream, false);
		$output = stream_get_contents($stream);

		sleep(10);

		return '<br />Mise à jour du Serveur En cours !';
	}
	else
		return 'Erreur Authentification';
	}
else
	return 'Erreur Connexion';

M'enfin, ça m'a l'air bien compliqué quand même !


Trusty Tahr (64 bits), Athlon64 3800+, ATI Radeon HD4870

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 22/11/2012, à 12:02

corgato

Re : Nohup ne fonctionne pas...

Non ça ne fonctionne pas comme ça.
Je crée bien le fichier mais la connexion se referme juste après du coup la commande est stoppé.
C'est pour ça que je voulais mettre en place nohup.

Hors ligne

#9 Le 22/11/2012, à 12:11

Postmortem

Re : Nohup ne fonctionne pas...

Il faut t'arranger à mettre le nohup sur l'appel du script et non pas dans le script comme tu l'as fait. T'as vu que j'avais rajouté le nohup plus loin ?


Trusty Tahr (64 bits), Athlon64 3800+, ATI Radeon HD4870

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#10 Le 22/11/2012, à 12:44

corgato

Re : Nohup ne fonctionne pas...

Oui j'ai vu mais ça ne change rien ^^

Hors ligne

Haut de page ↑