Re: wie shell script ordentlich beenden
Michelle Konzack schrieb am Mittwoch, 29. M�rz 2006 um 16:10:15 +0200: > Am 2006-03-26 18:30:07, schrieb Thorsten Haude: > > > schreibt. Bei Dir scheint es sich um eine selbstgebastelte Lösung zu > > handeln, darum mußt Du Dir auch das selbstbasteln. Vielleicht so: > > kommando & > > echo $! >/var/run/kommando.pid > >$? Nein, $! ist richtig -- Jörg Friedrich There are only 10 types of people: Those who understand binary and those who don't. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: wie shell script ordentlich beenden
Am 2006-03-27 16:16:16, schrieb Peter: > Erstmal vielen Dank für eure Hilfe. > > Ich hab jedoch noch ein Problem mit der shell Programmierung. > Bei dem Server werden zwei Prozesse gestartet. > hlds_run wird von meinem Script gestartet, > hlds_i686 wird durch hlds_run gestartet. > > Um den Server zu stoppen, versuche ich nun die PID von hlds_i686 über > /bin/ps aux | awk '/hlds_i686 -game dod \+maxplayers 21/ {print $2}' > zu ermitteln Im script machste ein: 8<-- #!/bin/bash # Definieren des auszuführenden Befehls COMMAND=hdls_i686 # ermitteln der aktuellen seriellen Zeit seit 1.1.1970 let CTIME=`date +%s` # Ausführen des Befehls und in den hintergrund schicken $COMMAND & # Nun suchen wie alle Prozesse die den # den namen unseres Befehls haben (ps -f -C $COMMAND |grep "$COMMAND" |tr -s " ") | while read VAL ; do # Wenn mehrere da sind, arbeiten wir # sie einem nach dem anderen ab let STIME=`date --date=\`echo "$VAL" |cut -d " " -f5` +%s`+20 # nun vergleichen wir, ob der zu überprüfenden # Prozess nach unserer CTIME gestartet wurde if [ $STIME -gt $CTIME ] ; then # wenn ja, schreiben wir ne PID echo "$VAL" |cut -d " " -f2 >/games/run/$COMMAND.pid # und beenden mit exit exit 0 fi done exit 0 8<-- Ähm, was ist das: > begin 666 dodhid1.dat > M(R$O8FEN+V)A<[EMAIL PROTECTED]"B,@1&%Y(&]F($1E9F5A="!,:6YU>"!397)V97(L(%-E > begin 666 dod1.dat > M([EMAIL PROTECTED])I;B]B87-H#0HC#0HC(R,@0D5'[EMAIL > PROTECTED])5"!)3D9/#0HC(%!R;W9I ??? Greetings Michelle Konzack -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ # Debian GNU/Linux Consultant # Michelle Konzack Apt. 917 ICQ #328449886 50, rue de Soultz MSM LinuxMichi 0033/3/8845235667100 Strasbourg/France IRC #Debian (irc.icq.com) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: wie shell script ordentlich beenden
Am 2006-03-26 18:30:07, schrieb Thorsten Haude: > schreibt. Bei Dir scheint es sich um eine selbstgebastelte Lösung zu > handeln, darum mußt Du Dir auch das selbstbasteln. Vielleicht so: > kommando & > echo $! >/var/run/kommando.pid $? Greetings Michelle Konzack Systemadministrator -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ # Debian GNU/Linux Consultant # Michelle Konzack Apt. 917 ICQ #328449886 50, rue de Soultz MSM LinuxMichi 0033/3/8845235667100 Strasbourg/France IRC #Debian (irc.icq.com) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: wie shell script ordentlich beenden
Erstmal vielen Dank für eure Hilfe. Ich hab jedoch noch ein Problem mit der shell Programmierung. Bei dem Server werden zwei Prozesse gestartet. hlds_run wird von meinem Script gestartet, hlds_i686 wird durch hlds_run gestartet. Um den Server zu stoppen, versuche ich nun die PID von hlds_i686 über /bin/ps aux | awk '/hlds_i686 -game dod \+maxplayers 21/ {print $2}' zu ermitteln Wenn ich mein Script dodhid1 über die Konsole starte, werden beide PIDs gespeichert. Wenn ich dodhid1 mittels des init.d Scriptes dod1 starte, wird nur die PID von hlds_run gespeichert. Die Datei /games/run/dod1a.pid wird angelegt, jedoch nicht mit der PID gefüllt. Warum? begin 666 dodhid1.dat M(R$O8FEN+V)A<[EMAIL PROTECTED]"B,@1&%Y(&]F($1E9F5A="!,:6YU>"!397)V97(L(%-E MFEO(@T*#0H-"F-D("1$ M3T1?4$%42 T*=&5S=" M65RW!R:6YT("0R?2http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: wie shell script ordentlich beenden
Also sprach "Peter" <[EMAIL PROTECTED]> (Sun, 26 Mar 2006 20:24:45 +0200): > Danke euch für eure Hilfe. > > Noch eine allgemeine Frage: > > > kill -TERM `cat /var/run/kommando.pid` ^^^[1] > wie heißt die Anweisung, wenn ich die Pid-Datei in eine Variablen > gespeichert habe > > Pidfil=/var/run/kommando.pid > kill -TERM ??? [1] `` > und ich möchte mein Kommando nun ebenfalls in einer Variablen > speichern. > > DOD_CMD=./hlds_run -game dod +maxplayers 20 +map dod_anzio > +servercfgfile funserver.cfg +mapcyclefile funmaps.txt +motdfile > funmoto.txt +port 27014 -noipx > > wenn ich nun das Kommando mit > nohup $DOD_CMD & > ausführen möchte, wird mir gemeldet, > -game: command not found > > warum? "", $ man bash, einem Umweg ueber ps aux | awk '/hlds_run -bla -bla/ {print $2}' oder sieh dich hier[2] mal um. Ich wuerde mich mit start-stop-daemon auseinandersetzten. Doc's lesen kann hier Wunder wirken. [2] http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html > Gruß > Peter sl ritch
Re: wie shell script ordentlich beenden
Am Sonntag, den 26.03.2006, 20:24 +0200 schrieb Peter: > Danke euch fr eure Hilfe. > > Noch eine allgemeine Frage: > > > kill -TERM `cat /var/run/kommando.pid` > wie heit die Anweisung, wenn ich die Pid-Datei in eine Variablen > gespeichert habe > > Pidfil=/var/run/kommando.pid > kill -TERM ??? > kill -TERM `cat $Pidfil` > und ich mchte mein Kommando nun ebenfalls in einer Variablen speichern. > > DOD_CMD=./hlds_run -game dod +maxplayers 20 +map dod_anzio +servercfgfile > funserver.cfg +mapcyclefile funmaps.txt +motdfile funmoto.txt +port > 27014 -noipx > > wenn ich nun das Kommando mit > nohup $DOD_CMD & > ausfhren mchte, wird mir gemeldet, > -game: command not found > > warum? > ich denke mal quoten > Gru > Peter > > Grüße / Regards, Oliver -- It seems that more and more mathematicians are using a new, high level language named "research student". -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: wie shell script ordentlich beenden
Danke euch für eure Hilfe. Noch eine allgemeine Frage: > kill -TERM `cat /var/run/kommando.pid` wie heißt die Anweisung, wenn ich die Pid-Datei in eine Variablen gespeichert habe Pidfil=/var/run/kommando.pid kill -TERM ??? und ich möchte mein Kommando nun ebenfalls in einer Variablen speichern. DOD_CMD=./hlds_run -game dod +maxplayers 20 +map dod_anzio +servercfgfile funserver.cfg +mapcyclefile funmaps.txt +motdfile funmoto.txt +port 27014 -noipx wenn ich nun das Kommando mit nohup $DOD_CMD & ausführen möchte, wird mir gemeldet, -game: command not found warum? Gruß Peter -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: wie shell script ordentlich beenden
start-stop-daemon, kurzes beispiel aus einem init skript von mir: NAME=kaid DAEMON=/usr/local/kaid/$NAME PIDFILE=/var/run/$NAME.pid test -x $DAEMON || exit 0 d_start() { start-stop-daemon --start --quiet --make-pidfile \ --pidfile $PIDFILE --exec $DAEMON \ -- -c /usr/local/kaid/kaid.conf > /var/log/kaid.log & } d_stop() { kill -9 `cat $PIDFILE` } Grüße / Regards, Oliver -- The surest way to remain a winner is to win once, and then not play any more. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: wie shell script ordentlich beenden
On 26.03.06 17:54:48, Peter wrote: > Hallo NG, Wir sind immernoch eine ML. ;-) > ich habe ein bash-script von der Art > nohup "Kommando" & > erstellt. Dadurch wird ein Server gestartet. Keine gute Idee. Schau dir mal die init-Skripte von anderen Servern, wie apache, PosgreSQL, MySQL... an. Am besten startet man sowas wohl mit dem start-stop-daemon (hab sowas noch nie gemacht). > Kann ich die Beendigung der Server irgendwie �ber die PIDs machen, sodass > nur der betreffende Server abgeschaltet wird? Da sollte dir start-stop-daemon unter die Arme greifen koennen. Ansonsten musst du die PID in eine Datei in /var/run/ schreiben. Und beim stoppen dort wieder auslesen. Andreas -- You will be recognized and honored as a community leader. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: wie shell script ordentlich beenden
Also sprach "Peter" <[EMAIL PROTECTED]> (Sun, 26 Mar 2006 17:54:48 +0200): > Hallo NG, Hallo, ist eine ML.. > ich habe ein bash-script von der Art > nohup "Kommando" & > erstellt. Dadurch wird ein Server gestartet. > [...] > Kann ich die Beendigung der Server irgendwie über die PIDs machen, > sodass nur der betreffende Server abgeschaltet wird? Du kannst ja den PID des Jobs beim Erzeugen in eine Datei schreiben und spaeter den nehmen oder das alles auch ueber den start-stop-daemon (wie in den anderen initscripten) erledigen lassen. > Gruß > Peter sl ritch
Re: wie shell script ordentlich beenden
Moin, * Peter wrote (2006-03-26 17:54): >Kann ich die Beendigung der Server irgendwie über die PIDs machen, sodass >nur der betreffende Server abgeschaltet wird? Normal ist, daß Dämonen ihre PID in eine Datei namens /var/run/${Name des Dämons}.pid schreibt. Bei Dir scheint es sich um eine selbstgebastelte Lösung zu handeln, darum mußt Du Dir auch das selbstbasteln. Vielleicht so: kommando & echo $! >/var/run/kommando.pid Diesen Prozeß kannst Du dann gezielt abschießen: kill -TERM `cat /var/run/kommando.pid` Thorsten -- Im übrigen gilt ja hier derjenige, der auf den Schmutz hinweist, für viel gefährlicher als der, der den Schmutz macht. - Kurt Tucholsky pgpdrMMAVpkkK.pgp Description: PGP signature