PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : frage zu diensten, die automatisch starten..


ev1l88
18.04.05, 14:18
hiho..
mal wieder ne frage von mir =)
und zwar zu meinem debian lanserver.
wenn ich jetzt z.b. n startscript habe, muss ich das ja nach rc2.d und rc6.d verlinken..
das mach ich ja mit
ln -s /etc/init.d/blubb /etc/rc2.d/S90blubb

wofür steht hier das S90?
wozu ist das?
bin noch neu bei debian..

mfg ev1l

ps: würd ja in irc #debian.de nachfragen aber da bin ich gebanned >.<

rudi_m
18.04.05, 14:43
Prinzipiell sollte es gehen wenn Du die Links per Hand anlegst.
S90 heisst dabei, dass das script mit dem parameter "start" und erst nachdem all SXX links mit kleinerer nummer aufgerufen wurden.

Aber Du solltest natuerlich die "kill links" nicht vergessen fuer den fall dass Du den entsprechenden Runlevel verlassen willst.
Scripte die spaet gestarten werden sollen werden sollen meistens frueh gekillt werden.
Also bei dir vielleicht
$ ln -s /etc/init.d/blubb /etc/rc2.d/K01blubb

wie gesagt prinzipiell geht es so, wenn dein init script allerdings dem standard entspricht sollte ein

$ insserv blubb
das alles automatisch erledigen.

insserv bekommt die notwendigen infos fuer die nummerierung aus den folgenden Zeilen im blubb script

### BEGIN INIT INFO
# Provides: blubb
# Required-Start: xxxx (hier stehen init dienste die vorher gstartet werden muessen)
# Required-Stop: yyyy
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: This script is loading the needed blubb drivers
### END INIT INFO

carnil
18.04.05, 14:54
Hallo

Zum Nachlesen:
http://www.linuxfibel.de/booten.htm#runlevel
http://www.nl.debian.org/doc/manuals/reference/ch-system.de.html#s-runlevels
Da steht alles drinn was du wissen möchtest. Letzteres ist ein Link in die Debianreferenz, genau passend zu deiner Distribution oben.

MfG carnil

ev1l88
18.04.05, 15:18
thx, werds mir gleich mal durchlesen..

ev1l88
18.04.05, 15:58
mal noch ne frage..
ich hab jetzt mein cs startscript, was beim booten automatisch startet.
funzt einwandfrei!
bloß ich dachte.. ich änder einfach die variablen oben im script denn müsste das ja auch für andere programme gehen.
geht aber nicht. er sagt immer dass das programm schon läuft. (ist aber nicht so. läuft nicht.)
wieso meint er immer das es läuft, obwohl es nicht läuft?
wie muss ich das script verändern, damit es geht?

startscript:

#! /bin/sh
################################################## ######
#
#
#
# USER Username
# NAME screen name
# PATH don't change this!
# DIR Your Path to Server Directory
# DAEMON name of the startscript
# PARAMS parameters
# DESC description of the server
#
#
#
################################################## ######
USER=csserver
NAME=hlds
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DIR=/home/hlds
DAEMON=hlds_run
PARAMS="-game cstrike +map de_dust2 +maxplayers 16 -insecure"
DESC="Counter-Strike dedicated server"
################################################## ######
#### DONT CHANGE ANYTHINK BELOW THIS LINE ! ! ! ####
################################################## ######

case "$1" in
start)
if [[ `su $USER -c "screen -ls |grep $NAME"` ]]
then
echo "Server is already running!"
else
echo "Starting $DESC: $NAME"
su $USER -c "cd $DIR; screen -m -d -S $NAME ./$DAEMON $PARAMS"
fi
;;

stop)
if [[ `su $USER -c "screen -ls |grep $NAME"` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep -v grep | grep -i $USER | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;

restart)
if [[ `su $USER -c "screen -ls |grep $NAME"` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep -v grep | grep -i $USER | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi

echo -n "Starting $DESC: $NAME"
su $USER -c "cd $DIR; screen -m -d -S $NAME ./$DAEMON $PARAMS"
echo " ... done."
;;

status)
ps aux | grep -v grep | grep $DIR > /dev/null
CHECK=$?
[ $CHECK -eq 0 ] && echo "$NAME is DOWN" || echo "$NAME is UP"
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac

exit 0

tictactux
18.04.05, 16:03
Hi,

da müßtest Du so ziemlich alle Variablen anpassen. Die Fehlermeldung könnte
durch DAEMON oder NAME kommen.

Gruss,
Wolfgang

ev1l88
18.04.05, 16:12
naja ich hab folgendes geändert:
user=pkserver
name=pk
dir=/home/pk/bin
daemon=pkserver
params="+dedcated +interface 192.168.178.3"
desc=pk server

rest ist 1:1 übernommen

hab mir gedacht so funktioniert es auch mit pk...
tut es aber nicht.
wenn ich das script starten will -> pk is already running

tictactux
18.04.05, 16:37
wenn ich das script starten will -> pk is already running
läuft der "pkserver" (ich kenne den nicht) vielleicht schon?
Prüfe das mit ps/top oder einem anderen Prozessmonitor.
Schau auch in /var/run nach, ob da vielleicht eine .pid Datei davon ist.
Viele Daemon-Prozesse legen eine solche an.

rudi_m
18.04.05, 16:40
if [[ `su $USER -c "screen -ls |grep $NAME"` ]]
then
echo "Server is already running!"

zumindest schein deine Screen session noch zu laufen
mach mal
$ su csserver
<password>
$ screen -ls

dann muesstest Du es sehen.

Ich finde das script auch nicht sonderlich intelligent.
Es sollte sich die PID des servers irgendwo merken um ihn killen zu koennen, anstatt das irgendwie aus "ps aux" herauszugreppen"

Stichworte: startproc, killproc, checkproc

ev1l88
18.04.05, 16:46
@tictactux
nein der painkiller server läuft nicht.
wenn ich den server ganz normal starte, ohne pk startscript, und dann manuell das startscript ausführen möchte, meint er ja auch dass der server bereits läuft.
der prozess dazu läuft auch nicht, und eine .pid datei ist auch nicht da.
screen funktioniert auch nicht (der server läuft ja nich)

das startscript is/war ja n cs startscript. mit cs geht es.
muss ich vieleicht noch etwas anderes verändern in dem script?

@rudi_m
wo krieg ich denn so ein script her. hast mal n beispiel für mich?
und ja, der cs screen läuft. was hat das mit dem painkiller script zu tun?
thx, ev1l