Zurück   CC-Community Board > CC-CB Hauptforen > Alternative OS > Linux

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 08.08.2010, 13:17   #1
Bogus
Ostfriesenpinguin
 
Registriert seit: 25.04.2001
Beiträge: 3.035
Standard Ein Shellscript mit 2 Instanzen

Hallo ;D

Ich brauch mal hilfe beim Scripten von einem Shellscript. Hab ein Bashscript mit zwei Instanzen

Code:
#! /bin/bash

O1DIR="/home/user/download/opensim1/"
O2DIR="/home/user/download/opensim2/"
ulimit -s 262144

while :
do
running=`ps ax|grep OpenSim.exe|grep -v grep`
if [ -z "$running" ]; then
# The Log Entry
TIME="OpenSim Down, Restarting: `date +"%A, %B %d - %r"`"
echo $TIME >>$OSDIR/os.log
cd $O1DIR/bin
screen -fa -S DW -d -U -m mono OpenSim.exe -gui=true -noverbose=true
cd $O2DIR/bin
screen -fa -S FW -d -U -m mono OpenSim.exe -gui=true -noverbose=true
fi
sleep 120
done
Das problem ist nun, wie kriege ich es hin, wenn ich ein von den beiden Instanzen neu starten muss ? Könnte man dafür die beiden Instanzen teilen in zwei Scripts und dann in einem dritten wieder vereinen ? So das die beiden SCripts getrennt laufen, aber sie im Hintergrund laufen können.

Klingt ein wenig kompliziert, ich weiss *gg

Danke in vorraus ;D
Bogus ist offline   Mit Zitat antworten
Alt 08.08.2010, 16:12   #2
Brian
Ehemals Username
 
Benutzerbild von Brian
 
Registriert seit: 13.06.2002
Beiträge: 1.332
Standard AW: Ein Shellscript mit 2 Instanzen

Ohne es getestet zu haben:

Du setzt außerdem an keiner Stelle OSDIR und ist ein ulimit von
der Größe wirklich notwendig?

Ach ja ich schaue nach den PWD der einzelnen Prozesse, da nur
darin sich die Prozesse unterscheiden.

Code:
#!/bin/bash

ulimit -s 262144

while :; do
  PIDS=$(pgrep OpenSim.exe)
  for NUMBER in 1 2; do
  FOUND=""
    for PID in $PIDS; do
      P_PWD=$(strings /proc/${PID}/environ |awk -F= '/PWD/ {print $2}')
      if [[ $P_PWD == /home/user/download/opensim${NUMBER}/bin ]]; then
         FOUND="YES"
      fi
    done
    if [[ ! $FOUND == YES ]];then
      TIME="OpenSim Down, Restarting: `date +"%A, %B %d - %r"`"
      echo $TIME >>/tmp/OpenSimScript.log
      cd /home/user/download/opensim${NUMBER}/bin
      screen -fa -S FW -d -U -m mono OpenSim.exe -gui=true -noverbose=true
    fi
  done
  sleep 120
done

Geändert von Brian (11.08.2010 um 21:42 Uhr)
Brian ist offline   Mit Zitat antworten
Folgender Benutzer sagt Danke zu Brian für den nützlichen Beitrag:
Alt 08.08.2010, 18:43   #3
Bogus
Ostfriesenpinguin
 
Registriert seit: 25.04.2001
Beiträge: 3.035
Standard AW: Ein Shellscript mit 2 Instanzen

Huhu

Das SCript ist nicht von mir .. das hat jemand anderer erstellt. Daher kann ich dazu nichts sagen.

Was macht denn das Ulimit genau ?

Geändert von Bogus (11.08.2010 um 21:20 Uhr)
Bogus ist offline   Mit Zitat antworten
Alt 11.08.2010, 21:20   #4
Bogus
Ostfriesenpinguin
 
Registriert seit: 25.04.2001
Beiträge: 3.035
Standard AW: Ein Shellscript mit 2 Instanzen

Hmmm .. hab das SCript ausprobiert, es macht nicht ganz was ich möchte. Nämlich wenn ich ein Prozess von den beiden kille und dann wieder starte, wird es nicht wieder in den hintergrund gelegt. Oder muss ich es mit spiziellen kommando starten ?
Bogus ist offline   Mit Zitat antworten
Alt 11.08.2010, 21:46   #5
Brian
Ehemals Username
 
Benutzerbild von Brian
 
Registriert seit: 13.06.2002
Beiträge: 1.332
Standard AW: Ein Shellscript mit 2 Instanzen

Da war mindestens ein Fehler im Script, den habe ich jetzt
rauseditiert. Das "Screen -Kommando" sollte den Prozess im
Hintergrund starten, das habe ich mir aber nicht angeschaut.

Bitte auch den Output von dem Script und den Inhalt von
/tmp/OpenSimScript.log mitschicken.
Brian ist offline   Mit Zitat antworten
Alt 13.08.2010, 05:23   #6
Bogus
Ostfriesenpinguin
 
Registriert seit: 25.04.2001
Beiträge: 3.035
Standard AW: Ein Shellscript mit 2 Instanzen

Ok, werde ich mal testen .... Ein logdatei habe ich nicht gefunden.

Aber trotzdem danke fürs helfen ;D Hat mir einiges weiter geholfen ;D
Bogus ist offline   Mit Zitat antworten
Alt 08.09.2010, 09:50   #7
frosch
Oldie
 
Benutzerbild von frosch
 
Registriert seit: 07.01.2005
Ort: Brandenburg
Beiträge: 194
Standard AW: Ein Shellscript mit 2 Instanzen

Hallo,
vielleicht hilft dir folgendes weiter:


1. Startskripte erstellen (chmod +x nicht vergessen)


Skript 1 unter /home/user/download/opensim1/startOpenSimDW

#! /bin/bash
OpenSim.exe &
echo $$ > /tmp/OpenSimDW_PID

Skript 2 unter /home/user/download/opensim2/startOpenSimFW

#! /bin/bash
OpenSim.exe &
echo $$ > /tmp/OpenSimFW_PID


2. Dein jetztiges Skript anpassen
---------------------------------
#! /bin/bash

O1DIR="/home/user/download/opensim1/"
O2DIR="/home/user/download/opensim2/"
ulimit -s 262144

while :
do
runningDW=`ps h -$(cat /tmp/OpenSimDW_PID)`
runningFW=`ps h -$(cat /tmp/OpenSimFW_PID)`

if [ -z "$runningDW" ]; then
# The Log Entry
TIME="OpenSimDW Down, Restarting: `date +"%A, %B %d - %r"`"
echo $TIME >>$OSDIR/os.log
cd $O1DIR/bin
# screen -fa -S DW -d -U -m mono startOpenSimDW -gui=true -noverbose=true
./startOpenSimDW &
fi

if [ -z "$runningFW" ]; then
# The Log Entry
TIME="OpenSimFW Down, Restarting: `date +"%A, %B %d - %r"`"
echo $TIME >>$OSDIR/os.log
cd $O2DIR/bin
#screen -fa -S FW -d -U -m mono startOpenSimFW -gui=true -noverbose=true
./startOpenSimFW &
fi

sleep 120
done


Gruß
frosch
__________________
Für jedes Problem gibt es eine einfache Lösung es noch komplizierter zu machen
oder :
Individueller Standard
frosch ist offline   Mit Zitat antworten
Alt 07.12.2010, 02:52   #8
Bogus
Ostfriesenpinguin
 
Registriert seit: 25.04.2001
Beiträge: 3.035
Standard AW: Ein Shellscript mit 2 Instanzen

Halllo ;D

Jetzt weiss ich wieder, was ich hätte haben wollen in dem Script ein Menu zum auswählen von einem der beiden Scripts, ginge sowas ?

@Frosch: Dein Script sieht auch nicht schlecht aus, werde ich mal antesten ;D
Bogus ist offline   Mit Zitat antworten
Alt 07.12.2010, 20:34   #9
Brian
Ehemals Username
 
Benutzerbild von Brian
 
Registriert seit: 13.06.2002
Beiträge: 1.332
Standard AW: Ein Shellscript mit 2 Instanzen

Welches Script möchtest Du jetzt dementsprechend angepasst haben?

Menu (ncurses oder so) hätte ich keine Lust drauf, eine einfache
Abfrage wäre aber nicht das Ding.
Brian ist offline   Mit Zitat antworten
Alt 08.12.2010, 04:41   #10
Bogus
Ostfriesenpinguin
 
Registriert seit: 25.04.2001
Beiträge: 3.035
Standard AW: Ein Shellscript mit 2 Instanzen

Hi

Abfrage würde mir auch reichen ;D Am liebsten deines ;D

Danke in vorraus ;D
Bogus ist offline   Mit Zitat antworten
Alt 11.12.2010, 13:19   #11
Brian
Ehemals Username
 
Benutzerbild von Brian
 
Registriert seit: 13.06.2002
Beiträge: 1.332
Standard AW: Ein Shellscript mit 2 Instanzen

Code:
#!/bin/bash

ulimit -s 262144
unset TO_START

for NUMBER in 1 2; do
  echo "Do you whant to start OpenSim Number \"${NUMBER}\"?"
  read ANSWER
  if [[ $ANSWER =~ ^[y,Y,j,J] ]]; then
    TO_START="$TO_START $NUMBER"
  fi
done

if [[ -z $TO_START ]]; then
  echo "Nothing to do..."
  exit 1
fi

while :; do
  PIDS=$(pgrep OpenSim.exe)
  for NUMBER in $TO_START; do
    FOUND=""
    for PID in $PIDS; do
      P_PWD=$(strings /proc/${PID}/environ |awk -F= '/PWD/ {print $2}')
      if [[ $P_PWD == /home/user/download/opensim${NUMBER} ]]; then
         FOUND="YES"
      fi
    done
    if [[ ! $FOUND == YES ]];then
      TIME="OpenSim Down, Restarting: `date +"%A, %B %d - %r"`"
      echo $TIME >> /tmp/OpenSimScript.log
      cd /home/user/download/opensim${NUMBER} && \
      screen -fa -S FW -d -U -m mono OpenSim.exe -gui=true -noverbose=true || \
      exit 1
    fi
    done
    sleep 120
done
Der Teil mit "[[ $ANSWER =~ ^[y,Y,j,J] ]]"
Kann gut sein dass der erst ab Bash Version 4 funktioniert. Muss
ich noch mal nachsehen, evtl. ist Deine Bash aber einfach neu
genug. Ich habe hier gerade keine alte Bash zum Testen.

Geändert von Brian (12.12.2010 um 16:54 Uhr)
Brian ist offline   Mit Zitat antworten
Alt 11.12.2010, 16:47   #12
Bogus
Ostfriesenpinguin
 
Registriert seit: 25.04.2001
Beiträge: 3.035
Standard AW: Ein Shellscript mit 2 Instanzen

Hallo Brian ;D

Danke ;D WErde ich mal testen, hab hier Ubuntu 10.04 laufen, müssste also eigentlich funzen ;D
Bogus ist offline   Mit Zitat antworten
Alt 12.12.2010, 15:12   #13
Bogus
Ostfriesenpinguin
 
Registriert seit: 25.04.2001
Beiträge: 3.035
Standard AW: Ein Shellscript mit 2 Instanzen

Hallo ;D

Also ich hab bash version 4.1, abfragen macht er, aber er sucht einen Ordner mit einer Nummer dahinter. Wenn er den file nicht findet, startet er das Script trotzdem.
Bogus ist offline   Mit Zitat antworten
Alt 12.12.2010, 16:49   #14
Brian
Ehemals Username
 
Benutzerbild von Brian
 
Registriert seit: 13.06.2002
Beiträge: 1.332
Standard AW: Ein Shellscript mit 2 Instanzen

Da habe ich mich an Deine Vorlage gehalten.

/home/user/download/opensim1 und /home/user/download/opensim2
muss es geben. Ich bau noch eine Überprüfung ein, dass der Ordner
auch existiert.
Brian ist offline   Mit Zitat antworten
Alt 12.12.2010, 20:24   #15
Bogus
Ostfriesenpinguin
 
Registriert seit: 25.04.2001
Beiträge: 3.035
Standard AW: Ein Shellscript mit 2 Instanzen

ahh so, naja war eigentlich nur ein beispiel, ich hab die ordner immer individuell genannt bzw keine zahl zugewiesen bzw.dahinter geschreibsel oder so.
Bogus ist offline   Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 Uhr.


vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.