|
|
#1 |
|
Ostfriesenpinguin
Registriert seit: 25.04.2001
Beiträge: 3.035
|
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 Klingt ein wenig kompliziert, ich weiss *gg Danke in vorraus ;D |
|
|
|
|
|
#2 |
|
Ehemals Username
Registriert seit: 13.06.2002
Beiträge: 1.332
|
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) |
|
|
|
| Folgender Benutzer sagt Danke zu Brian für den nützlichen Beitrag: |
|
|
#3 |
|
Ostfriesenpinguin
Registriert seit: 25.04.2001
Beiträge: 3.035
|
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) |
|
|
|
|
|
#4 |
|
Ostfriesenpinguin
Registriert seit: 25.04.2001
Beiträge: 3.035
|
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 ?
|
|
|
|
|
|
#5 |
|
Ehemals Username
Registriert seit: 13.06.2002
Beiträge: 1.332
|
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. |
|
|
|
|
|
#6 |
|
Ostfriesenpinguin
Registriert seit: 25.04.2001
Beiträge: 3.035
|
Ok, werde ich mal testen .... Ein logdatei habe ich nicht gefunden.
Aber trotzdem danke fürs helfen ;D Hat mir einiges weiter geholfen ;D |
|
|
|
|
|
#7 |
|
Oldie
Registriert seit: 07.01.2005
Ort: Brandenburg
Beiträge: 194
|
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 |
|
|
|
|
|
#8 |
|
Ostfriesenpinguin
Registriert seit: 25.04.2001
Beiträge: 3.035
|
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 |
|
|
|
|
|
#9 |
|
Ehemals Username
Registriert seit: 13.06.2002
Beiträge: 1.332
|
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. |
|
|
|
|
|
#10 |
|
Ostfriesenpinguin
Registriert seit: 25.04.2001
Beiträge: 3.035
|
Hi
Abfrage würde mir auch reichen ;D Am liebsten deines ;D Danke in vorraus ;D |
|
|
|
|
|
#11 |
|
Ehemals Username
Registriert seit: 13.06.2002
Beiträge: 1.332
|
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
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) |
|
|
|
|
|
#12 |
|
Ostfriesenpinguin
Registriert seit: 25.04.2001
Beiträge: 3.035
|
Hallo Brian ;D
Danke ;D WErde ich mal testen, hab hier Ubuntu 10.04 laufen, müssste also eigentlich funzen ;D |
|
|
|
|
|
#13 |
|
Ostfriesenpinguin
Registriert seit: 25.04.2001
Beiträge: 3.035
|
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. |
|
|
|
|
|
#14 |
|
Ehemals Username
Registriert seit: 13.06.2002
Beiträge: 1.332
|
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. |
|
|
|
|
|
#15 |
|
Ostfriesenpinguin
Registriert seit: 25.04.2001
Beiträge: 3.035
|
ahh so, naja war eigentlich nur ein beispiel, ich hab die ordner immer individuell genannt bzw keine zahl zugewiesen bzw.dahinter geschreibsel oder so.
|
|
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|