Re: wie shell script ordentlich beenden

2006-04-02 Diskussionsfäden Joerg Friedrich
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

2006-04-02 Diskussionsfäden Michelle Konzack
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

2006-04-02 Diskussionsfäden Michelle Konzack
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

2006-03-27 Diskussionsfäden 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

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

2006-03-26 Diskussionsfäden Richard Mittendorfer
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

2006-03-26 Diskussionsfäden Oliver Jato
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

2006-03-26 Diskussionsfäden Peter
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

2006-03-26 Diskussionsfäden Oliver Jato
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

2006-03-26 Diskussionsfäden Andreas Pakulat
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

2006-03-26 Diskussionsfäden Richard Mittendorfer
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

2006-03-26 Diskussionsfäden Thorsten Haude
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