staging.inyokaproject.org

Screen per Script steuern, Befehl wird nicht ausgeführt

Status: Ungelöst | Ubuntu-Version: Server 18.10 (Cosmic Cuttlefish)
Antworten |

ManfredAabye

Anmeldungsdatum:
17. Januar 2019

Beiträge: Zähle...

Also ich mache das folgendermaßen:

screen -fa -S ScreenName -d -U -m ProgrammName

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh
cd /opensim/bin

clear

echo 'Robust Server Starten'
sleep 5
screen -fa -S RO -d -U -m mono Robust.exe
sleep 10

echo 'Money Server Starten'
sleep 5
screen -fa -S MS -d -U -m mono MoneyServer.exe
sleep 10

echo 'Sim Server Starten'
sleep 5
screen -fa -S OS -d -U -m mono OpenSim.exe
sleep 10

echo 'Nachfolgende screens wurden gestartet RO, MS und OS.'
screen -ls

Die screens heißen dann RO, MS und OS.

Aber ich habe das Problem mit dem Beenden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh
cd /opensim/bin

echo Regionen Beenden
sleep 3
screen -S OS -X stuff $'shutdown\n'
sleep 10

echo Money Beenden
sleep 3
screen -S MS -X stuff $'shutdown\n'
sleep 10

echo Robust Beenden
sleep 3
screen -S RO -X stuff $'shutdown\n'
sleep 10

echo Schauen ob alles beendet ist
screen -ls

Direkt in der Konsole funktioniert "screen -S ScreenName -X stuff $'shutdown\n'"

aber leider nicht in diesem Script.

Weis vieleicht jemand woran es liegt?

P.S. Bitte keine Antworten mit dem Befehl "Kill" das zerstört MySQL Datenbanken wenn diese gerade beschrieben werden.

Fall gelöst!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
!/bin/sh
cd /opensim/bin

clear

echo 'Regionen Server Beenden'
sleep 3
screen -fa -S OS -U -m -X stuff $'shutdown\n'
sleep 10

echo 'Money Server Beenden'
sleep 3
screen -fa -S MS -U -m -X stuff $'shutdown\n'
sleep 10

echo 'Robust Server Beenden'
sleep 3
screen -fa -S RO -U -m -X stuff $'shutdown\n'
sleep 10

echo 'Nachfolgende screens wurden beendet RO, MS und OS.'
screen -ls

Moderiert von ChickenLipsRfun2eat:

Der Beitrag ist von screen-script abgetrennt worden. Bitte entführe keine Themen (Verhaltenscodex)!

Bearbeitet von ChickenLipsRfun2eat:

Versionsangabe angepasst.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Bist du auf einem Ubuntu-Server? Beendest du die Mono-Anwendungen vorher? Was genau soll shutdown auslösen? Normalerweise fährt man damit ja sein System herunter.

ManfredAabye

(Themenstarter)

Anmeldungsdatum:
17. Januar 2019

Beiträge: Zähle...

Ubuntu 18.10 Server läuft mit mono und mySQL.

Mono beendet sich automatisch mit dem beenden vom OpenSimulator.

Das erste Script und das 3. Script funktionieren, der Fall ist gelöst.

Also der OpenSimulator ist eine .NET mono Anwendung und diese läuft in der Konsole.

Da es ja drei Konsolenprogramme sind und ich nur screen kenne was funktioniert, nutze ich dies halt.

Dieser OpenSimulator muss heruntergefahren werden da es Daten aus MySQL liest und schreibt.

Deswegen muss dies mit shutdown beenden werden sonst gibt das Datenverlust oder gar ein defekt an der Datenbank.

Da ich das hasse wenn die Leute nicht die Lösung präsentieren, hab ich das korrekte script noch dran gehängt, falls jemand solch eine Lösung sucht.

Es wäre schön wenn jemand ein Ubuntu Installationspaket bauen könnte für den OpenSimulator.

http://opensimulator.org/wiki/Main_Page

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

ManfredAabye schrieb:

Ubuntu 18.10 Server läuft mit mono und mySQL.

Version angepasst, siehe oben.

Mono beendet sich automatisch mit dem beenden vom OpenSimulator.

Und das Screen-Terminal bleibt aktiv, nach dem beenden?

Da ich das hasse wenn die Leute nicht die Lösung präsentieren, hab ich das korrekte script noch dran gehängt, falls jemand solch eine Lösung sucht.

Separat anhängen (in diesem Post) wäre auch gut gewesen, so muss man erst lesen, um "Fall gelöst" zu entdecken. Nächstes Mal dann ☺

Es wäre schön wenn jemand ein Ubuntu Installationspaket bauen könnte für den OpenSimulator.

Frag doch die Entwickler, ob sie ein Ubuntu-PPA machen. Ich vermute mal mono ist nicht das populärste unter Linux.

ManfredAabye

(Themenstarter)

Anmeldungsdatum:
17. Januar 2019

Beiträge: 3

Deine frage: Und das Screen-Terminal bleibt aktiv, nach dem beenden?

Nein, das geht folgendermassen

screen -fa -S SCREENNAME -U -m -X stuff $'shutdown\n'

öffnet den Screen „SCREENNAME“ und tippt praktisch dort das Kommando „stutdown“ ein anschließend mit „\n“ noch der Return.

Da dort eine OpenSim Konsole unter mono läuft wird diese beendet mit der Anwendung zusammen.

Jetzt wird das screeen „SCREENNAME“ automatisch beendet.

Warum das jetzt beendet wird, ist das ein leeres screen automatisch beendet wird.

Hier nochmal das ganze minimalistisch:

1
2
3
4
#!/bin/sh
echo 'Programm im screen Starten'
sleep 3
screen -fa -S SREENNAME -d -U -m Programm.exe
1
2
3
4
#!/bin/sh
echo 'Befehl shutdown in den screen senden.'
sleep 3
screen -fa -S SREENNAME -U -m -X stuff $'shutdown\n'

SREENNAME durch eigenen Namen ersetzen welcher ist dabei egal.

Programm.exe durch das gewünschte Programm ersetzen.

Shutdown durch die eigene zu sendende Funktion oder Befehl ändern.

\n ist praktisch Enter/Return/Eingabetaste/Zeilenschalter/Rückführtaste wie auch immer man dazu sagen möchte.

Screen -r SREENNAME #Öffnet den screen.

screen -ls #Zeigt alle laufenden screens an.

screen -X -S SREENNAME kill #Tötet den screen aber Vorsicht eventuell Datenverlust.

Und zu Ubuntu-PPA machen, das würde ich gerne aber ich schaffe das nicht, ich hänge am Key kann leider keinen erstellen.

Linux ist nicht Populär unter .NET Programierern 😉

Dazu kommt noch das es für einen 50-80 Jährigen Menschen schwer ist, das Archiv einzubinden.

Besser wäre es ein Installationspaket (deb) direkt zum Download anzubieten, was aber auch wieder ein ritt auf der Rasierklinge ist so etwas zu erstellen.

Aber egal ich versuche das mal.

Antworten |