#1 Le 31/07/2005, à 12:54
- santino
[resolu] comment lance un programme au demarrage avec un commande
salut a tous,
voila je cherche a lancer mes deux serveurs dedie au demarrage mais la commande pour les lancer depuis la console est la suivante:
sudo ./hlds_run -game dod -vacbeta +maxplayers 23 +map dod_flash
Merci de votre aide;)
Dernière modification par santino (Le 16/08/2005, à 14:41)
Hors ligne
#2 Le 31/07/2005, à 13:01
- Stemp
Re : [resolu] comment lance un programme au demarrage avec un commande
Quel est le problème ?
«La violence n'a jamais rien réglé» Gengis Khan 1162-1227
Blog | Crunchbang Linux | Arch Linux
Hors ligne
#3 Le 31/07/2005, à 13:04
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
desole, erreur de ma part j'ai oublier un bout, je veux lancer automatiquement cette commande au demarrage du pc, comment faut'il faire???
merci
Hors ligne
#4 Le 31/07/2005, à 13:08
- Ju.
Re : [resolu] comment lance un programme au demarrage avec un commande
Le mieux pour les serveur half life est d'utiliser screen
screen sudo ./hlds_run -game dod -vacbeta +maxplayers 23 +map dod_flash
Apres pour que ca se lance au demarrage, il faut faire un petit script de demarrage (inspire toi d'un de /etc/init.d ) le rendre executable chmod +x et enfin de le mettre au boot ; update-rc.d
Hors ligne
#5 Le 31/07/2005, à 13:49
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
ok je te remercie j'essai de suite!!:P:P
Hors ligne
#6 Le 03/08/2005, à 10:56
- gillouz
Re : [resolu] comment lance un programme au demarrage avec un commande
Salut, Ju
peut tu nous donner plus d'infos sur l'utilisation de update-rc.d. Quand je le lance j'ai ca:
$ sudo update-rc.d
usage: update-rc.d [-n] [-f] <basename> remove
update-rc.d [-n] <basename> defaults [NN | sNN kNN]
update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .
-n: not really
-f: force
Le nom de mon script d'init est wifi-radar.sh il est dans init.d et il contient:
#!/bin/sh
/usr/sbin/wifi-radar -d
J'avais déjà fait un lien dans etc/rc.5 que j'avais baptisé 99wifi-radar mais ca ne marchait pas.
Avez vous une idée de l'erreur que j'ai fait??
Hors ligne
#7 Le 03/08/2005, à 11:18
- Ju.
Re : [resolu] comment lance un programme au demarrage avec un commande
sudo update-rc.d wifi-radar.sh defaults
et voila.
Hors ligne
#8 Le 07/08/2005, à 21:29
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
desoler de relanser le topic mais j'ai bosser dure sur la creation du script, j'ai trouver deux ou trois modele et sa a l'air de marche mais en partie.
avant tout voici le script
#!/bin/sh
dir="/server/public/"
echo "Demarage Cs Server"
sleep 1
srcdexe="hlds_run -game dod -vacbeta -port 27015 +map dod_flash +maxplayers 23 srcds.pid"
srcdname="srcds.pid"
cd $dir
if test -r $srcdname; then
# vériification du PID
srcdpid=`cat $srcdname`
if `kill -CHLD $srcdpid >/dev/null 2>&1`; then
exit 0
fi
echo "Source Dedicated Server Crontab :"
echo ""
echo " Effacement du fichier $srcdname"
rm -f $srcdname
fi
echo ""
echo "Processus Absent.... Redémarrage du Serveur"
echo ""
./$srcdexe
bon dc dans cette config, il me la lanse mais il lance pas le reste donc pas de gnome et j'ai essyer en mettant la commande screen dedan mais il ne la comprend pas comme si le script etai lanser trop tot?
y a t'il un moyen de la lanser plus tard quand tout est lanser pour que il comprenne la commande screen?
merci d'avance
Hors ligne
#9 Le 07/08/2005, à 21:42
- Donk
Re : [resolu] comment lance un programme au demarrage avec un commande
Quand tu lances le script, rajoutes un & derrière le nom
Hors ligne
#10 Le 08/08/2005, à 09:24
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
merci donk mais je le met ou le &?? derriere le nom du script? dans le script derriere la commande a lanser?
Dernière modification par santino (Le 08/08/2005, à 09:26)
Hors ligne
#11 Le 08/08/2005, à 10:38
- Donk
Re : [resolu] comment lance un programme au demarrage avec un commande
Par exemple, si tu veux executer le script toto en arrière plan tu tapes:
./toto &
Hors ligne
#12 Le 09/08/2005, à 10:28
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
ok merci j'essai de suite
Hors ligne
#13 Le 09/08/2005, à 10:56
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
sa marchhe cool mais j'ai trois probleme lol,
-deja il lanse le processus en root , comment faire pour qu'il le lanse avec mon utilisateur? il suffit de mettre sudo dans la commande?
-la commande screen ne marche pas, j'ai essayer
screen -A -m -d -S dod ./hlds_run & -ga....
et sa aussi
screen -A -m -d -S dod sudo ./hlds_run & -ga....
mais sa marche pas, le serveur se lanse pas et je ne vois rien lors du demarrage.
-lors de la fermeture du pc, il essaie de redemarrer le serveur donc sa bloque la fermeture du pc, je pense qu'il faut un script de stop mais ou le mettre et quoi mettre dedan??
merci d'avance
Hors ligne
#14 Le 09/08/2005, à 11:02
- Ju.
Re : [resolu] comment lance un programme au demarrage avec un commande
Pour que le processus ne se lance pas en root met un
su rene -c "commande"
pour peu que l'utilisateur qui lance la commande soit rene.
Pour Screen, enleve le &, si tu utilises screen pas besoin de reprendre la main.
Pour recuperer le terminal un
screen -x
devrait faire l'affaire (si le screen a ete lance avec TON utilisateur) si tu as lancé au demarrage :
cd /la/ou/il/faut
su rene -c "screen -A -m -d -S dod ./hlds_run"
Ca devrait marcher.
A la fermeure du pc il faut que ton script de demarrage ait un evenement 'Stop' et que ce stop tue le serveur proprement (idealement) ou au moins que ca ne bloque pas.
Ca pourrait etre tres utile du colles tout ton script ici.
Hors ligne
#15 Le 09/08/2005, à 11:33
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
merci de ton aide ju,
voici le script actuelle:
#!/bin/sh
dir="/server/public/"
echo "Demarage Cs Server"
sleep 1
srcdexe="hlds_run & -game dod -vacbeta +maxplayers 23 +map dod_flash +port 27015srcds.pid"
srcdname="srcds.pid"
cd $dir
if test -r $srcdname; then
# vériification du PID
srcdpid=`cat $srcdname`
if `kill -CHLD $srcdpid >/dev/null 2>&1`; then
exit 0
fi
echo "Source Dedicated Server Crontab :"
echo ""
echo " Effacement du fichier $srcdname"
rm -f $srcdname
fi
echo ""
echo "Processus Absent.... Redémarrage du Serveur"
echo ""
./$srcdexe
si je comprend bien ce que tu me dit, il devrait, d'apres se dont j'ai besoin, etre comme sa:
#!/bin/sh
dir="/server/public/"
su santino -c "command"
echo "Demarage Cs Server"
sleep 1
srcdexe="screen -A -m -d -S dod ./hlds_run -game dod -vacbeta +maxplayers 23 +map dod_flash +port 27015srcds.pid"
srcdname="srcds.pid"
cd $dir
if test -r $srcdname; then
# vériification du PID
srcdpid=`cat $srcdname`
if `kill -CHLD $srcdpid >/dev/null 2>&1`; then
exit 0
fi
echo "Source Dedicated Server Crontab :"
echo ""
echo " Effacement du fichier $srcdname"
rm -f $srcdname
fi
echo ""
echo "Processus Absent.... Redémarrage du Serveur"
echo ""
./$srcdexe
Bon pour le stop, je sais pas du tout ou le mettre et comment, la je veus bien encore un peu d'aide lol sinon je sait pas si le su santino... est au bonne endroit?
De plus, quand je le lanse dans la console, je suis obliger de faire sudo avec screen pour que sa marche, va t'il arriver a me lancer la commande screen sans sudo?
Dernière modification par santino (Le 09/08/2005, à 11:34)
Hors ligne
#16 Le 09/08/2005, à 11:38
- Ju.
Re : [resolu] comment lance un programme au demarrage avec un commande
Inspire toi de /etc/init.d/skeleton pour les start/stop
Voire de celui là : http://www.counter-strike.de/content/server/hlds
Il est commenté et assez clair !
Je ne comprends pas trop pourquoi 27015 et srcds.pid sont collés, pas sur que hlds apprecie d'avoir un port non numérique ;-)
Hors ligne
#17 Le 09/08/2005, à 11:53
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
erreur de ma part il ne son tpas coller merci de tes info je regarde de suite
Hors ligne
#18 Le 09/08/2005, à 14:20
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
bon j'ai un peu de mal, sa marche pas, je sais pas trop pour cette partie:
# Edit and uncomment it to run the server as non-root
# CS_USER="jwm"
PATH=/bin:/usr/bin:/sbin:/usr/sbin
# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/hlds
DAEMON=$DIR/hlds_run
moi j'ai mi sa:
# Edit and uncomment it to run the server as non-root
CS_USER="santino"
PATH=/bin:/usr/bin:/sbin:/usr/sbin
# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/server/public/
DAEMON=$DIR/hlds_run
je pense que pour l'utilisateur sa va mais pour le path??? il fau changer un truc, moi je pensais que il sufiisant de mettre le dirrectory apres dir?? mais sa pas l'air de marche dc sa doit pas etre sa ?
et pour les lien symbolique, j'ai mi le script dans /etc/init.d/ puis j'ai fait se qu'il disait:
Now you can link the script to your runlevel-dir, here's an example for runlevel 3:
Now you can link the script to your runlevel-dir, here's an example for runlevel 3:
# ln -s /etc/rc.d/init.d/hlds /etc/rc.d/rc3.d/S90hlds
# ln -s /etc/rc.d/init.d/hlds /etc/rc.d/rc3.d/K50hlds
donc une fois adapter , sa ma donner sa:
ln -s /etc/init.d/hlds /etc/rc3.d/S90hlds
ln -s /etc/init.d/hlds /etc/rc3.d/K50hlds
et je vois bien les liens dans rc3.d mais je me suis peut etre tromper?
merci de votre aide
Hors ligne
#19 Le 09/08/2005, à 14:58
- benohite
Re : [resolu] comment lance un programme au demarrage avec un commande
Si je me souviens bien le level 3 c'est sans interface graphique, gnome (du moins gdm) se lance au niveau 5.
Voila si ça peut t'aider tu m'en vois ravi
Ben
You are legally entitled and encouraged to copy, share and redistribute this CD for yourself and your friends. Share the spirit of Ubuntu !
Hors ligne
#20 Le 09/08/2005, à 15:43
- Ju.
Re : [resolu] comment lance un programme au demarrage avec un commande
houla, pour le lancement au boot, verifie que le script soit executable (chmod +x) et dans /etc/init.d/
apres (si le script s'appelle hlds) tape :
sudo update-rc.d hlds defaults
(enleve les liens symboliques que tu as créee avant)
Pour le PATH ajoute : le dossier bin de l'installation du serveur si c'est /opt/halflife/bin
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/halflife/bin
Hors ligne
#21 Le 09/08/2005, à 17:12
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
ok, pour le chmod c'etait deja bon mais pour le update , je l'avais fai mais quand j'ai vu qu'il me disai de faire d'autre lien j'ai tout suprimer pour creer ceux la, bon tan pi j'ai refait tout comme il fau mais je pige pas bien la difference entre PATH et DIR.
DIR=directory? et PATH?
Et dsl de poser une question aussi bete mais un bin c'est quoi exactement? le fichier de lansement du serveur? du coup je sais plus moi lol avec sa :
PATH=/bin:/usr/bin:/sbin:/usr/sbin
# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/hlds
si PATH c'est le fichier de lansement du serveur qui se nomme hlds_run, je doi mettre sa
PATH=/bin:/usr/bin:/sbin:/server/public
# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/hlds
mais a se moment DIR, je ne change rien, je laisse /hlds???
merci de m'aider encore un peut je pense que ça touche la fin enfin j'espere
Dernière modification par santino (Le 09/08/2005, à 17:14)
Hors ligne
#22 Le 09/08/2005, à 17:30
- Ju.
Re : [resolu] comment lance un programme au demarrage avec un commande
Dans le script il y a un
cd $dir
c'est dedans que s'executera l'appli (dont le chemin est dans PATH) typiquement si ton appli produit des logs ou autres, ou si hlds a besoin de charger des bibliotheque/modules il les trouvera là.
Hors ligne
#23 Le 09/08/2005, à 19:34
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
alors tout est impeccable sauf....que le processus se lanse toujours en root snif, doans le script on voit sa:
If you don't want to start the server as root you have to change this:
# add the var CS_USER and uncomment it
# change the lines at the "start-block"
donc j'ai changer sa
# Edit and uncomment it to run the server as non-root
# CS_USER="jwm"
pour sa
# Edit and uncomment it to run the server as non-root
CS_USER="santino"
et on peut voir sa
# Change the lines for running as non-root!
# su $CS_USER - -c "screen -d -m -S $NAME $DAEMON $PARAMS"
que j'ai changer pour sa
# Change the lines for running as non-root!
su $CS_USER - -c "screen -d -m -S $NAME $DAEMON $PARAMS"
mais rien a faire, il se lanse toujours en root?? j'ai essayer de supprimer la ligne suivante
screen -d -m -S $NAME $DAEMON $PARAMS
mais sa ne change rien donc voici le script final qui me permet de lanser le serveur avec screen sans probleme mais mais en root:
#!/bin/sh
#
# Start the Counter-Strike dedicated server.
#
# AUTHORS :
#
# Julien Escario ( pandemik@azilog.net )
# &
# Cedric Rochat ( crochat@younics.org )
#
# ===========================================
#
# What you need:
#
# Linux :)
# awk
# screen
# the hlds_l & cstrike-files
#
# How to use:
#
# Edit the DIR-Var to fit your system (just contains the path to the dir that contains hlds_run)
# Edit the PARAMS-Var to fit your needs
# - standard is startup as LAN-server
#
# When this is done, copy the file to /etc/rc.d/init.d (or whereever your system stores the
# scripts for starting the services
# Now you can link the script to your runlevel-dir, here's an example for runlevel 3:
# ln -s /etc/rc.d/init.d/hlds /etc/rc.d/rc3.d/S90hlds
# ln -s /etc/rc.d/init.d/hlds /etc/rc.d/rc3.d/K50hlds
#
# Or use it manualy like:
# /etc/rc.d/init.d/hlds start
# /etc/rc.d/init.d/hlds stop
#
# How to see the server-console:
#
# Just type in: screen -r cstrike
# More info about screen can be found by typing "man screen" or using this nice link
# http://server.counter-strike.net/help/linuxscreen.html
#
# If you don't want to start the server as root you have to change this:
# add the var CS_USER and uncomment it
# change the lines at the "start-block"
#
# You must be logged in as this user to re-attach the screen!
#
# DOC by jwm (jwm@counter-strike.de)
clear
# Edit and uncomment it to run the server as non-root
CS_USER="santino"
PATH=/bin:/usr/bin:/sbin:/server/public
# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/server/public/
DAEMON=$DIR/hlds_run
# LAN-server:
#PARAMS="-game cstrike -nomaster -insecure +sv_lan 1 +maxplayers 16 +map de_dust"
# Internet-server:
PARAMS="-game dod -vacbeta +map dod_flash +maxplayers 22"
NAME=dod
DESC="CounterStrike dedicated server"
case "$1" in
start)
echo "Starting $DESC: $NAME"
if [ -e $DIR ];
then
cd $DIR
# Change the lines for running as non-root!
su $CS_USER - -c "screen -d -m -S $NAME $DAEMON $PARAMS"
screen -d -m -S $NAME $DAEMON $PARAMS
else echo "No such directory: $DIR!"
fi
;;
stop)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;
restart)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
echo -n "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
echo " ... done."
;;
status)
# Check whether there's a "hlds" process
# if "checkproc" is installed, you can use this:
# checkproc $DIR/hlds_run && echo "CS-Server RUNNING" || echo "CS-Server NOT RUNNING"
# (thx to commander)
ps aux | grep -v grep | grep hlds_r > /dev/null
CHECK=$?
[ $CHECK -eq 0 ] && echo "HLDS is UP" || echo "HLDS is DOWN"
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0
donc voila, j'aimerais bien connaitre mon erreur, merci d'avances a tous
Dernière modification par santino (Le 09/08/2005, à 19:35)
Hors ligne
#24 Le 12/08/2005, à 14:49
- santino
Re : [resolu] comment lance un programme au demarrage avec un commande
ju si t'es dans le coin, merci de m'aider encore un petit peu, j'arrive toujours aps a le lanser avec l'utilisateur santino au lieu de root
merci
Hors ligne
#25 Le 16/08/2005, à 00:48
- Ju.
Re : [resolu] comment lance un programme au demarrage avec un commande
su $CS_USER - -c "screen -d -m -S $NAME $DAEMON $PARAMS"
screen -d -m -S $NAME $DAEMON $PARAMS
else echo "No such directory: $DIR!"
fi
A mon avis :
echo "Starting $DESC: $NAME"
if [ -e $DIR ];
su $CS_USER -c "screen -d -m -S $NAME $DAEMON $PARAMS"
else echo "No such directory: $DIR!"
fi
Devrait suffire et faire ce que tu veux...
Teste la ligne en remplacant le su par un echo pour voir si ca renvoit bien les bons parametres.
Hors ligne