View previous topic :: View next topic |
Author |
Message |
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Mon Jul 21, 2008 8:05 pm Post subject: [gentoo]Creer un script temporisé .... |
|
|
Bonjour, je cherche à creer un script temporisé sous gentoo .
voila l'application par une page php je lance un script mais je voudrais que se script s'arrete tous seul au bout de 3 heures, je viens de faire quelques recherchs à gauche et a droite et etant un "noob" sur la programmation j'aurais besoin d'un serieu coup de main pour comprendre comment faire .
Pourriez vous me donnez quelques tuyaux merci beaucoup .
Last edited by claudecs on Tue Jul 22, 2008 8:56 pm; edited 1 time in total |
|
Back to top |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Mon Jul 21, 2008 8:53 pm Post subject: |
|
|
Salut et bienvenue ! Peux-tu mettre ton titre du topic en conformité avec les conventions de notre forum s'il te plait ? Merci
Pour ton script, soit t'implémentes ça dedans, avec un timer ou je ne sais quoi qui le tue au bout de 3h... soit tu fais ça par une tâche cron qui va tuer le script si sa durée d'execution dépasse 3h...
Je laisse qq'un d'autre détailler mieux que ça, j'ai pas tellement de temps là |
|
Back to top |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Mon Jul 21, 2008 9:10 pm Post subject: |
|
|
Avec zsh tu peux jouer avec le module datetime pour etre précis, sinon ce qu'il faut que tu fasses c'est un script dont au début il récupère son pid,
dans ton script tu fork avec un sleep qui attend 3h et kill le processus père.
genre
PID=$$
(sleep 10800 && kill -15 ${PID})&
le reste de ton script |
|
Back to top |
|
|
Magic Banana Veteran
Joined: 13 Dec 2005 Posts: 1912 Location: Belo Horizonte, Minas Gerais, Brasil
|
Posted: Tue Jul 22, 2008 8:04 am Post subject: |
|
|
Avec le même état d'esprit, j'avais écris un script Bash (Shell ?) similaire :
wak : Wait And Kill: | #!/bin/bash
if [ -z "$2" ]
then
echo "Usage: wak command timeout"
exit 64
fi
($1
# Just to let the time to the sleep $2 to initiate in case of an almost instantenous execution of $1
sleep 1
killall sleep)&
sleep $2 && pkill -f "$1" && exit 1
exit 0 |
Tu enregistres ça dans un répertoire de ta variable PATH (typiquement /usr/bin), le rends exécutable (chmod a+x SCRIPT) et l'appelle avec en première argument ta commande (à mettre entre guillemets si elle est en plusieurs mots) et en second argument le temps alloué (e.g., 10s, 2m, 3h). Cette commande renvoie 0 si la commande s'est terminée avant le temps imparti et 1, sinon. C'est très utile à l'intérieur d'un script (si la commande c'est terminée, fais ça sinon fais ça, ou encore exécute ces commandes jusqu'à ce que l'une d'entre elle se termine à temps).
@Bapt
Sauf erreur de ma part, dans le code que tu proposes, le sleep 10800 continue à tourner même si la commande s'est terminée. Ainsi, si le timeout n'est qu'une sécurité utilisée alors que des milliers de commandes (normalement rapides) sont exécutées, tu vas avoir autant de sleep qui traînent et autant de kill qui vont échouer. Je me trompe ?
Last edited by Magic Banana on Tue Jul 22, 2008 10:45 am; edited 1 time in total |
|
Back to top |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Tue Jul 22, 2008 10:15 am Post subject: |
|
|
@Magic Banana, pas faux, pour sela il suffira de rajouter un kill -15 ${PID} tout à la fin du script, comme ça si il a finit son execution, il tu se tue, donc tue le fork. |
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Tue Jul 22, 2008 1:28 pm Post subject: reponse |
|
|
Bonjour et tous d'abord merci de participer çà se poste ;
Geekounet je viens de lire le topics desolé je vais essaye de préciser un peu plus .
Donc voila j'ai un script de lancement pour un serveur de jeu sous gentoo, je suis chez ovh et j'ai un serveur dedié installé avec leur release ovh 2 en 32 bits .
au passage je met la totalité du script de lancement ici ici car il fonctionne niquel !
Code: | #!/bin/sh
#############################################
## Script de lancement des serveur ##
#############################################
#############################################
## Début des variables ##
#############################################
# Nom de l'utilisateur
SRCDS_USER=""
# Nom du screen
SRCDS_NAME=""
# Binaire du serveur
SRCDS_BIN="./srcds_run"
# Repertoire du serveur
SRCDS_PATH=""
# Options de lancement
SRCDS_OPTS="-game cstrike +maxplayers 32 +map zm_little_city_v2 -port 27045 -tickrate 66 -pingboost 3 +fps_max 101 -command update"
# Ligne de commande pour l'update
#STEAM_UPDATE="./steam -command update -game "Counter-Strike Source""
#############################################
## Fin des variables ##
#############################################
usage() {
echo "---------------------------------------------------------------------"
echo "Usage: ${SRCDS_NAME} (stop|start|restart|update|patch)"
echo "---------------------------------------------------------------------"
exit 2
}
if [ -z $1 ]; then
usage
fi
srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
#OWD=`pwd`
cd ${SRCDS_PATH}
#su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}
#cd $OWD
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}
srcds_stop() {
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
#su ${SRCDS_USER} -c "screen -dr ${SRCDS_NAME} -X quit"
screen -dr ${SRCDS_NAME} -X quit
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}
srcds_restart() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}
srcds_update() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
OWD=`pwd`
cd $SRCDS_PATH
su ${SRCDS_USER} -c "${STEAM_UPDATE}"
cd $OWD
srcds_patch
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Fin de la sequence"
echo "---------------------------------------------------------------------"
}
srcds_patch () {
echo "---------------------------------------------------------------------"
echo "Lancement du patch pour Gameinfo.txt : Debut de la sequence"
echo "---------------------------------------------------------------------"
echo "Resultat :"
${SRCDS_PATH}dod/gameinfopatch.sh
echo "Copie du fichier motd.bak en motd.txt"
rm -f ${SRCDS_PATH}dod/motd.txt
cp ${SRCDS_PATH}dod/motd.bak ${SRCDS_PATH}dod/motd.txt
echo "Attribution des droits"
chown ${SRCDS_USER} ${SRCDS_PATH}dod/motd.txt
chown ${SRCDS_USER} ${SRCDS_PATH}dod/gameinfo.txt
echo "---------------------------------------------------------------------"
echo "Fin du patch pour Gameinfo.txt : Fin de la sequence"
echo "---------------------------------------------------------------------"
}
case $1 in
stop)
srcds_stop
;;
start)
srcds_start
;;
restart)
srcds_restart
;;
update)
srcds_update
;;
patch)
srcds_patch
;;
*)
usage
esac
exit 0 |
Pour ma team je souhaite le mettre à disposition quelques serveur war qu'il demarre d'eux même d'un page en php sécurisé sur notre site .
Pour cela j'ai l'habitude d'inserer ce code : (qui marche impec aussi lol)
Code: |
<?php
if (!empty($_POST)) {
echo 'Le serveur ';
if (isset($_POST['bouton2'])) {
echo '1 vas etre Rebotter';
system("bash /etc/init.d/serveur1.sh restart" );
} elseif (isset($_POST['bouton3'])) {
echo '1 vas etre Arreter';
system("bash /etc/init.d/serveur1.sh stop" );
} elseif (isset($_POST['bouton4'])) {
echo '1 vas etre Mis à jours';
system("bash /etc/init.d/serveur1.sh update" );
} else {
echo '1 vas etre Démarrer';
system("bash /etc/init.d/serveur1.sh start" );
}
}
?><form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<label></label>
<p align="center"><strong>Administration des Serveurs </strong></p>
<p>
<input type="SUBMIT" name="bouton2" value="Rebooter">
<input type="SUBMIT" name="bouton3" value="Arreter">
<input type="SUBMIT" name="bouton4" value="Mise à jour">
<em><strong>Le Serveur est</strong></em>
<?php
$port = *****;
$ip = "***.***.***.***";
$sock = @fsockopen($ip, $port, $num, $error, 5);
if (!$sock)
echo '<font color="#CC0000"><img src="http://*****/offline.png" alt="offline" width="32" height="32"></font>';
else{
echo '<font color="#00CC00"><img src="http://*****/online.png" alt="online" width="32" height="32"></font>';
fclose($sock);
}
?>
</p>
<p> </p>
</form>
|
Donc pour lancer mon serveur si je rajoute un script intermediare du style
Code: |
PID=$$
(sleep 10800 && kill -15 ${PID})&
/etc/init.d/mon script de lancement.sh start
|
et à la fin de mon script de lancement je rajoute ceci :
ais je bien tous compris, comme je vous es dit je suis nouvele untilisateur linux donc pardonner ses question surement tres clasique pour vous.
Et merci encore pour votre aide preciseuse . |
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Tue Jul 22, 2008 1:39 pm Post subject: |
|
|
Merci magic banana toi tu me onseillerai donc de faire se script
Code: |
#!/bin/bash
$1="su ***** -c '/etc/init.d/mon script de lancement.sh start"
$2="10800"
if [ -z "$2" ]
then
echo "Usage: wak command timeout"
exit 64
fi
($1
# Just to let the time to the sleep $2 to initiate in case of an almost instantenous execution of $1
sleep 1
killall sleep)&
sleep $2 && pkill -f "$1" && exit 1
exit 0
|
que je collerai dans mon /usr/bin et qui se lance tous seul ?
par avance merci |
|
Back to top |
|
|
Magic Banana Veteran
Joined: 13 Dec 2005 Posts: 1912 Location: Belo Horizonte, Minas Gerais, Brasil
|
Posted: Tue Jul 22, 2008 1:51 pm Post subject: |
|
|
Ton script est en Shell POSIX (/bin/sh). Ce que te propose Bapt nécessite zsh. Donc à moins d'installer zsh et de changer le "#!", ça ne va pas. Ce que je te propose a été testé avec Bash qui est très certainement le Shell qui interprète ton script (Bash étant une dépendance indispensable à Gentoo). Tu peux donc utiliser le morceau de code que je t'ai filé :
Si tu veux l'intégrer "en dur", cela donne :
Code: | (/etc/init.d/mon script de lancement.sh start
sleep 1
killall sleep)&
sleep 3h && pkill -f "/etc/init.d/mon script de lancement.sh start" |
Mais tu peux aussi suivre les instructions de mon précédent message (copie tel quel le code que je t'ai donné) et simplement ajouter en fin de ton script :
Code: | wak "/etc/init.d/mon script de lancement.sh start" 3h |
|
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Tue Jul 22, 2008 1:52 pm Post subject: |
|
|
Je viens de lui coller ca dans mon script, tous demarre mais rien ne s'arrete au bout de 60 seconde .
une idée ? qu'es je mal ecris ?
Code: |
srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
PID=$$
(sleep 60 && kill -15 ${PID})&
#OWD=`pwd`
cd ${SRCDS_PATH}
#su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}
#cd $OWD
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
|
|
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Tue Jul 22, 2008 2:02 pm Post subject: en dure ? |
|
|
Magic banana en dure cela veut dire dans ma page php ?
comme ceci ?
Code: |
echo '4 vas etre Rebotter';
system("bash (/etc/init.d/serveur4.sh start
sleep 1
killall sleep)&
sleep 60s && pkill -f "/etc/init.d/serveur4.sh start"" ); |
car ca me plantre ma page php plutot qu'autre chose ?
Que veut dire en dure |
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Tue Jul 22, 2008 2:16 pm Post subject: suite |
|
|
magique je viens de creer ce script sous usr/bin je l'ai nomé timer.sh je l'ai chmoder
Code: |
#!/bin/bash
if [ -z "$2" ]
then
echo "Usage: wak command timeout"
exit 64
fi
($1
# Just to let the time to the sleep $2 to initiate in case of an almost instantenous execution of $1
sleep 1
killall sleep)&
sleep $2 && pkill -f "$1" && exit 1
exit 0
wak "/etc/init.d/serveur4.sh start" 60s
|
malheureusement au bout de mes 60 secondes il tourne toujours ...
merci pour vos aide à un pauvre noob que je je suis ! (faut t'il rebooter mon serveur pour prendre en compte se nouveau script ?) |
|
Back to top |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Tue Jul 22, 2008 2:22 pm Post subject: Re: reponse |
|
|
claudecs wrote: | Geekounet je viens de lire le topics desolé je vais essaye de préciser un peu plus . |
Oui mais il faut quand même que tu modifies le titre (en éditant ton premier post) |
|
Back to top |
|
|
Magic Banana Veteran
Joined: 13 Dec 2005 Posts: 1912 Location: Belo Horizonte, Minas Gerais, Brasil
|
Posted: Tue Jul 22, 2008 2:25 pm Post subject: |
|
|
Le 'wak "COMMANDE" 60s' doit être placé à l'intérieur de srcds_start (et /usr/bin/wak ne doit pas contenir de ligne 'wak "/etc/init.d/serveur4.sh start" 60s'). Le problème est que je te comprends pas trop. Quelle est la COMMANDE, lancée dans srcds_start, qui doit être stoppée au bout de 60s ? |
|
Back to top |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Tue Jul 22, 2008 6:32 pm Post subject: |
|
|
Ce que j'ai proposé ne nécessite pas zsh du tout c'est tu posix normal.
J'ai parlé de zsh pour parler du module datetime pour le temps, mais j'ai proposé une solution posix qui fonctionnera avec n'importe quel shell. |
|
Back to top |
|
|
Magic Banana Veteran
Joined: 13 Dec 2005 Posts: 1912 Location: Belo Horizonte, Minas Gerais, Brasil
|
Posted: Tue Jul 22, 2008 7:49 pm Post subject: |
|
|
Bapt wrote: | Ce que j'ai proposé ne nécessite pas zsh du tout c'est tu posix normal.
J'ai parlé de zsh pour parler du module datetime pour le temps, mais j'ai proposé une solution posix qui fonctionnera avec n'importe quel shell. |
Merci alors de m'avoir fait découvrir "$$". Je ne connaissais pas et pensais que c'était un ajout de zsh. |
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Tue Jul 22, 2008 9:00 pm Post subject: suite |
|
|
La commande que je veut stopper au bou d'un certain temps c'est celle ci
Quote: |
#su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}
|
En gros le lancement de mon serveur css commander au dessus doit se stopper toute seule dans 3 heures .
donc j'ai enregistrer ton script comme il est c'est a dire :
Code: |
#!/bin/bash
if [ -z "$2" ]
then
echo "Usage: wak command timeout"
exit 64
fi
($1
# Just to let the time to the sleep $2 to initiate in case of an almost instantenous execution of $1
sleep 1
killall sleep)&
sleep $2 && pkill -f "$1" && exit 1
exit 0
|
Sous le nom de timer.sh
Et si je comprend bien il faut que je lance mon script avec la commande wak . Mon script *.start est lancé par un epage php donc je la modifi en rajoutant ta commande .
Code: |
echo '4 vas etre Démarrer';
system("bash wak "/etc/init.d/serveur4.sh start" 60s" );
|
je test ca tout de suite merci encore |
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Tue Jul 22, 2008 9:29 pm Post subject: suite |
|
|
Bon he bien toujours rien ma facon de l'ecrire doit planter ma page php .
Je l'ai lancer par putty en direct mais voila ce que cela me marque .
Code: |
ns****** ~ # wak "/etc/init.d/serveur4.sh start" 60s
-bash: wak: command not found
|
Désoleé je doit etre lourding mais j'ai du loupé quelque chose/
merci |
|
Back to top |
|
|
Magic Banana Veteran
Joined: 13 Dec 2005 Posts: 1912 Location: Belo Horizonte, Minas Gerais, Brasil
|
Posted: Tue Jul 22, 2008 9:50 pm Post subject: |
|
|
Commençons par quelque chose de simple : lorsque tu entres une commande, l'interpréteur (le Shell, Bash dans ton cas) cherche dans les répertoires de ta variable PATH (notamment /usr/bin) un fichier exécutable ayant le nom de la commande. Ainsi, si tu as appelé le fichier "timer.sh", il faut l'exécuter avec ce nom et non pas avec "wak" (qui était simplement le nom de fichier que j'avais personellement choisi).
Ensuite, si j'ai tout bien compris, ton PHP lance un script d'initialisation qui, lui même, exécute une commande qui doit être stoppée au bout de 3h (à moins qu'elle ne se termine avant). C'est donc dans le script d'initialisation (plus précisément dans la fonction srcds_start) que tu dois utiliser timer.sh :
Code: | srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
OWD=`pwd`
cd ${SRCDS_PATH}
timer.sh "su ${SRCDS_USER} -c screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}
screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}" 3h
cd $OWD
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------" |
Le code PHP initial devait rester inchangé.
Ceci dit, je ne saisis pas les subtlité de ce que tu fais (et n'ai jamais vraiment cherché à comprendre ce que fait la commande screen ). |
|
Back to top |
|
|
NEOxAKIRA Guru
Joined: 20 May 2007 Posts: 302 Location: France
|
Posted: Wed Jul 23, 2008 5:22 am Post subject: |
|
|
<HS>
Iop claudecs, je mettais poser la question de savoir si un serveur dédié n'étais pas mieux qu'un serveur verygames ou autre pour counter striker, Day of defeat et autre, donc pourrait tu préciser quelle offre tu as chez ovh et si ton serveur Counter-Strike Source tourne bien ? (combien de slot, combien de ticks)
Et il y a que ton serveur steam qui tourne ou aussi un apache par exemple pour heberger un site web en rapport avec le serveur...
</HS>
Merci |
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Wed Jul 23, 2008 11:39 am Post subject: suite |
|
|
Merci magic banana pour ton aide j'essaye ca ce soir .
Ps j'avais essayer de lancer par timer.sh lol je me suis douté que wak etait perso a toi mais n'en etant pas sur je te remerci de me l'avoir precisé . en effet ce monde de linux en prog pur etan pour moi nouveau .
NEOxAKIRA, je m'occupe de serveur depuis maintenant plus de cinq ans je suis passé pas un qui as eté racheter par verygames par nitroserv et par verygame.
je suis chez ovh depuis maitenant 3 ans avec 3 differents serveur installé en gentoo ovh release .
Sache tous d'abord que les grosse team passe tous par ovh que verygame à aussi ses serveurs chez verygames .
Ensuiste pour faire se que j'ai actuell0ment pour moin de 800 euros me couterais 2800 chez ovh ;
Mais j'attire ton attention sur les plus que fournis ovh quand tu ne connais pas le monde du serveur de jeu ainsi que la complexité à tous installé (ftp mirroir pour les map) les dll auto les modes d'introduction de jeu ainsi que la prog en linux .
voila si tu as d'utres question c'est avec plaisir que j'y repondrais .
ps mon offre sur ovh actuel je suis en superplan . |
|
Back to top |
|
|
NEOxAKIRA Guru
Joined: 20 May 2007 Posts: 302 Location: France
|
Posted: Wed Jul 23, 2008 4:50 pm Post subject: |
|
|
c'etait juste comme ça, car souvant en jouant je voit des gars qui galere a configurer leur serveur car ils connaissant pas grand chose en info, et je me suis dit que quand tu connais, surtout que c'est pas très dur a mettre en place un serveur de jeux, tu devais pouvoir obtenir de meilleur performance sur un serveur dédié et en plus heberger d'autre service que par un tiers fournissant que des serveur de jeux dont tu pas modifié autre chose que le serveur...
c'est étonnant car il doit pas falloir un très gros ordi pour faire tourner un serveur de counter strike, et ovh fourni une connexion de 100Mbit/s, je me disais meme qu'il doit être possible de faire tourner plusieurs serveurs de jeux sur un meme dédié sans dépenser plus d e100€ par mois et y ajouter apache et une bdd. |
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Wed Jul 23, 2008 6:56 pm Post subject: suite |
|
|
NEOxAKIRA
En effet c'est assez simple quand tu prend le temps de comprendre .
Pour mon cas donc beaucoup moins que 100 euros par moi j'ai installé dessus :
1 serveur 32 slots tick 100 fun
1 serveur 32 slots tick 100 gungame
1 serveur 32 slots tick 66 zombie
1 serveur 12 slots war
1 psychostats
1 teamspeak
1 serveur miroir pour mes fichiers à dll de plus de 500 maps
donc de quoi faire pas mal de frag non ! aucun lag constater pourtant les serveur son souvent frequenté .
Cherche Nltfrance sur google ca te donneras une petite idée .
ps pour 100 euros par moi tu passe sur du 1 gb de transfert illimité ! |
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Wed Jul 23, 2008 9:30 pm Post subject: suite |
|
|
magic babana mon script original est :
Code: |
srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
#OWD=`pwd`
cd ${SRCDS_PATH}
su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}
#cd $OWD
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
|
j'ai fait ca
Code: |
timer.sh "#su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}" 60s
|
ou ceci
Code: |
#timer.sh "su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}" 60s
|
et ceci
Code: |
timer.sh "su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}" 60s
|
rien de rien il ne demarre pas ...
j'ai meme essayer en direct et voici la reponce
Code: |
ns***** ~ # timer.sh "/etc/init.d/serveur4.sh start" 60s
: Aucun fichier ou répertoire de ce type
ns***** ~ #
|
petite info j'ai lancé mon fichier timer.sh en modifiant #!/bin/bash par #!/bin/sh pour qu'il soit reconnu et le nom en testwak .
ca m'as donné ceci
Code: |
ns****** ~ # testwak "serveur4.sh start" 10s
: command not foundine 2:
---------------------------------------------------------------------
Lancement du serveur : Debut de la sequence
---------------------------------------------------------------------
---------------------------------------------------------------------
Lancement du serveur : Fin de la sequence
---------------------------------------------------------------------
/usr/bin/testwak: line 12: 16213 Complété sleep $2
|
ca l'as démarrer mais pas stopper au bout de 10 seconde
Last edited by claudecs on Wed Jul 23, 2008 10:55 pm; edited 1 time in total |
|
Back to top |
|
|
claudecs n00b
Joined: 21 Jul 2008 Posts: 15
|
Posted: Wed Jul 23, 2008 9:37 pm Post subject: suite |
|
|
ps une petite question mon fichier apres un chmod +x /usr/bin/testwak marche impec
par contre quand je le modifi et que je veut le relancer il me met
Code: |
-bash: /usr/bin/testwak: /bin/sh^M: bad interpreter: Aucun fichier ou répertoire de ce type
|
meme si je lui recolle un nouveau chmod +x /usr/bin/testwak
que doit je faire pour le redeclarer dans se ca svp ?
merci |
|
Back to top |
|
|
Magic Banana Veteran
Joined: 13 Dec 2005 Posts: 1912 Location: Belo Horizonte, Minas Gerais, Brasil
|
Posted: Wed Jul 23, 2008 10:00 pm Post subject: |
|
|
Je ne sais pas avec quel éditeur de texte tu as copié le code mais il t'a collé des '^M' à la fin des lignes visiblement. Enlève ces '^M' (ou refais le copier-coller du script) avec un vrai éditeur de texte (e.g., emacs ).
Le '#' commence un commentaire en Shell. Il ne faut donc pas le mettre !
Tu as des soucis avec des guillemets sensés entourer d'autres guillemets. Naturellement le premier guillemet "interne" ferme le premier guillemet externe et ça ne peut pas aller. Tu pourrais donc faire de ta commande à temporiser un nouveau script (dans un fihier à part que tu n'oubli pas de rendre exécutable) que tu appelleras (par son nom de fichiers) en premier argument de timer.sh (le second étant, comme tu l'as déjà compris, "3h"). C'est le premier truc qui me vient et il y a sûrement plus élégant comme méthode (et moin compliqué car ce script devra prendre en argument toutes les varibles qu'il utilise). Les autres ?
Pour tester timer.sh facilement, essaie donc cela :
Code: | $ timer "sleep 10s" 1s |
Si ça s'arrête au bout d'une seconde c'est que c'est bon. |
|
Back to top |
|
|
|