Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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


Have Fun !

Conduite à tenir face aux trolls

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.


Have Fun !

Conduite à tenir face aux trolls

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.


Have Fun !

Conduite à tenir face aux trolls

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 ;-)


Have Fun !

Conduite à tenir face aux trolls

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

Have Fun !

Conduite à tenir face aux trolls

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 tongue  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à.


Have Fun !

Conduite à tenir face aux trolls

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.


Have Fun !

Conduite à tenir face aux trolls

Hors ligne