Hile bei Bashscript ?

Bash, Shell, PHP, Python, Perl, CGI
haui
Posts: 5
Joined: 2006-10-25 15:25

Hile bei Bashscript ?

Post by haui »

Hallo liebe Community,

Ich probiere schon einige zeit rum, aber jetzt komm ich wirklch nichtmehr weiter, evt. weiß ja einer von euch rat !?

Und zwar habe ich das folgende Script :

Code: Select all

#! /bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin

DIR=/var/www/web12/html/shoutcast/test

DAEMON=sc_serv

PARAMS="$3"

NAME="$2"
DESC="Shoutcast"

start() {
   echo "Starte $DESC: $NAME"
   if [ -e $DIR ];
   then
    cd $DIR
    screen -d -m -S $NAME ./$DAEMON $PARAMS
    echo " ... gestartet."
   else echo "Fehlerhaftes Verzeichniss: $DIR!"
   fi
}


getpid() {
kpid=`screen -ls |grep $NAME |awk -F . '{print $4}'|awk '{print $4}'` 
echo "$kpid"
}

case "$1" in
 start)
   start
   ;;

 getpid)
   getpid
   ;;

 restart)
   stop
   start
   ;;

 *)
   echo "Usage: $0 {start|stop|status|restart}"
   exit 1
   ;;

esac


exit 0
Wenn ich jetzt das script starte mit ./start TEST sc_serv.conf

funktioniert auch alles super. Er startet das programm und ist auch per ps -aux zu finden.

Wenn ich mir jetzt die PID hole bekomm ich die PID vom gestarteten screen.

Den kann ich auch mit kill $pid beenden.

Allerdings wird das script nicht beendet welches der screen startet.

Worann kann das liegen ?

Hat jemand eine ahnung ?

Währe unendlich dankbar für einen Tip

Gruß

Haui

[/code]
aubergine
Posts: 471
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: Hile bei Bashscript ?

Post by aubergine »

arbeite nicht mit screnn sondern direkt mit den Ein- Ausgabe und Fehlerkanälen und dein Problem ist behoben.
haui
Posts: 5
Joined: 2006-10-25 15:25

Re: Hile bei Bashscript ?

Post by haui »

Leider nicht möglich da ich das script mit einem perl script anstoße....

und da geht das nur über screen.

Wüsste jetzt auch nicht wie ich das anders realisieren soll...


Gruß

Haui
aubergine
Posts: 471
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: Hile bei Bashscript ?

Post by aubergine »

Post mal dein geändertes Perl+Bash Script dann kann ich dir auch helfen.


Oder du belässt es halt bei screen und killst im stop Bereich nicht die PID vom screen, sondern holst dir die Konsole wieder und beendest dann "sauber"
haui
Posts: 5
Joined: 2006-10-25 15:25

Re: Hile bei Bashscript ?

Post by haui »

Code: Select all

unlink("/var/www/web12/html/shoutcast/konsole/logs/$id.log");
print "Serverbeschreibung : $serverbeschreibung<br><br>";
$server1 = system("./start start $serverbeschreibung /var/www/web12/html/shoutcast/konsole/conf/$id.conf");

my $neuer = `./start getpid $serverbeschreibung`;
print "<br>Erteilte PID : $neuer <br><br>";
print "Datenbank Connect <br><br>";
&dbconnect;
print "DBABFRAGE-UPDATE - ID $id <br><br>";
my $sth = $dbh->prepare("update serverdaten set run='1', flag='0', startstopp='0', pid='$neuer' WHERE id='$id'");
das ist so der karsus knaxus aus dem perlscript

Gruß

Haui[/code]
aubergine
Posts: 471
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: Hile bei Bashscript ?

Post by aubergine »

Bearbeite den Bash Teil insoweit das du für stop und restart Part die Session von Screen wiederholst und schließt.
croc
Posts: 71
Joined: 2005-09-16 15:30
Location: Leipzig

Re: Hile bei Bashscript ?

Post by croc »

Soweit ich richtig gelesen hab, bleibt dein Startscript im Hintergrund aktiv?
Versuch mal statt "screen -d -m -S ..." folgendes:
"screen -dmS ..."
haui
Posts: 5
Joined: 2006-10-25 15:25

Re: Hile bei Bashscript ?

Post by haui »

Hallo cRoC,

leider auch keinen erfolg, ich starte über selben befehl nen gameserver da klappt das auch mit dem kill ohne sorgen !

Noch irgendeine idee ??

Gruß

Haui
croc
Posts: 71
Joined: 2005-09-16 15:30
Location: Leipzig

Re: Hile bei Bashscript ?

Post by croc »

Ich kenn mich mit Shellscripts nich so besonders aus, weil ich nur PHP-scripts auf der Shell benutze, aber vielleicht liegts an dem script?
Schau es Dir nochmal genau an, vielleicht fehlt irgendwo eines der tollen kleinen Zeichen wie {} () [] usw.
Vielleicht fehlt auch ein return-Befehl oder sowas.
Sind nur ein paar Hinweise, wie gesagt, ich kenn mich da nich aus.
lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: Hile bei Bashscript ?

Post by lucki2 »

Allerdings wird das script nicht beendet welches der screen startet.
Das wird an jenem Script liegen, daß da gestarted wird. Wenn sich das der Verantwortung von Screen entzieht(z.b. nohup) läuft das weiter.

An dem Perl Script sehe ich auch nicht, warum du screen nutzen mußt.

Ich vermute(!) Du willst ein Pidfile also eine Zuordnung zwischen Name und Pid? Dann geht das einfach mit einem Verzeichnis und eben einem Pidfile in dem die Pid steht - Schau mal nach /var/run/ - die Dateien, die auf ".pid" enden. Oder wofür brauchst Du screen sonst?