Dieses Forum nutzt Cookies
Dieses Forum nutzt Cookies um Anmeldeinformationen (keine Passwörter) zu speichern. Dabei werden diese Informationen als kleine Textdateien auf deinem Endgerät abgelegt. Sie können nur durch dieses Forum ausgelesen werden und stellen kein Sicherheitsrisiko dar. Neben deinem letzten Login wird auch abgespeichert, welche Themen du bereits gelesen hast.

Zudem wird ein Cookie angelegt, in dem abgespeichert wird, ob du diesen Hinweis gelesen hast. Damit wird er nicht jedes mal angezeigt.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Webserver/Gameserver - Writing PID - PHP-Question Maybe
Verfasser Nachricht
dungeonmaster
Gleisarbeiter
*

Beiträge: 33
Registriert seit: Dec 2010
Beitrag #1
Webserver/Gameserver - Writing PID - PHP-Question Maybe
Bin grad 'ein wenig' am Basteln an einem Webif - mag einfach meinen Leuten (windoofuser) keinen SSH-Account geben um Server zu starten, das wäre surreal anzunehmen dass die sich mit Syntax auseinandersetzen (und mit Screen, dtach, ...). Da code ich lieber an ein paar Wochenenden ein Interface als Jahrelang Konsolensupport zu machen. Übrigens - CFG/SCN/SAV/GRF-Management ist schon recht weit gediehen.

Ich Starte den/die Gameserver natürlich auch über ein Webinterface (derzeit SICHER nicht DAU-Konform, aber dafür vorgesehenZwinkern), schön und gut, funktioniert auch soweit ganz fein.

ABER - Damit meine (HTTP-)Session nicht abkackt musste ich '> /dev/null 2>&1' verwenden, sonst ist nämlich der Apache-Thread auf dem Server nach dem Launch tot. (Die Session für den Aktuellen Browser = stalled=Sanduhr, andere Browser auf dem selben Client funktionieren, session_destroy() hat nix geholfen)

- WIE finde ich nun die PID des Openttd-Prozesses raus (kein Schalter laut Doku um PID in ein File zu schreiben?), die wäre ganz hilfreich zum stoppen.

- Oder gibt es eine andere Möglichkeit den Gameserver zu killen, etwa via Openttd-Libs? (muss via PHP funktionieren)

- Vielleicht fehlt mir ein Kommandozeilen-Trick? Ansonsten würde ich versuchen nach einem Sleep ein "ps ax | grep "KOMMANDO" machen aber das fühlt sich auch dirty an?

Any tipps?

Technische Details:
- "passthru" - Commando im PHP-Script:
Code:
sudo -b -u openttd /usr/share/games/openttd_cpp/openttd -d 0 -D -g /home/openttd/.openttd/save/usa_1870_v0.2.sav -c /home/openttd/.openttd/openttd.cfg.usa -x > /dev/null 2>&1
- Gentoo Linux mit 2.6.31-Kernel - LAMP - 64bit
- Openttd + Chillis Patchpack

Further Development:

auf http://tt.unkompliziert.org hab ich den Gameserver und das EntwicklerCMS eingerichtet - derzeit maximal für Nerds interessant und ausserdem ist der FQDN grad net aktiv - mein Provider hat irgendwas an seinen DNS-Servern umgestellt. Klaro dass das eine GPL-Entwicklung ist.

Planung ersetzt Zufall durch Irrtum
09.05.2011 19:45
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
killermoehre
Geschäftsführer
***

Beiträge: 623
Registriert seit: Oct 2005
Beitrag #2
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
Die PID kann doch einfach über die Shell abgerufen werden.
http://stackoverflow.com/questions/24936...is-own-pid

killermoehre

Supporter
Wie man Fragen richtig stellt. Und andere Dinge, die wichtig sind.

Never Run A Touching System!
09.05.2011 22:21
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
dungeonmaster
Gleisarbeiter
*

Beiträge: 33
Registriert seit: Dec 2010
Beitrag #3
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
Nette Idee aber die PID die $$ zurückgibt hat leider nix mit den PIDs zu tun die OpenTTD dann bekommt.

Hänge ich echo $$ ran und bekomme dann die PID 10877 existiert die in der Prozessliste gar nicht mehr ... Der Sudo-Prozess hat dann in dem Fall 10879 und openttd selbst 10880.

Und dass ich nicht einfach echo $$+2 machen kann sollte klar sein.

Scheint ich komme nicht um ps ax rum?

Planung ersetzt Zufall durch Irrtum
10.05.2011 13:22
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
planetmaker
Tycoon
*****

Beiträge: 1.309
Registriert seit: Oct 2008
Beitrag #4
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
(10.05.2011 13:22)dungeonmaster schrieb:  Scheint ich komme nicht um ps ax rum?

Alle Systeme, die ich kenne und die die PID eines OpenTTD-Servers für solche oder ähnliche Zwecke nutz(t)en, verwenden eben jene Lösung. Läuft nur ein Server ist es einfach, laufen mehrere, so könnte man die ggf. durch unterschiedliche config-dateinamen und -parameter oder unterschiedliche Namen der Binary unterscheiden:

ps xu | grep 'openttd' | grep -v 'grep' | awk '{print $2}'

[Bild: 4q27gcl]
Schreib Deine eigenen NewGRFs, KIs oder Skripte. Siehe dazu DevZone, NML und Tutorien
10.05.2011 13:44
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Eddi
Tycoon
*****

Beiträge: 4.066
Registriert seit: Aug 2008
Beitrag #5
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
versuchs mal mit
Code:
openttd ... &
PID=$!
echo $PID

ggf. auch hilfreich:
Code:
wait $PID
(Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2011 13:50 von Eddi.)
10.05.2011 13:45
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
dungeonmaster
Gleisarbeiter
*

Beiträge: 33
Registriert seit: Dec 2010
Beitrag #6
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
@Eddi:

Kommt nur "Leerzeichen"/Nix raus, könnte am sudo davor liegen (Rückgabe in anderer Shell?). Bin leider nicht so der Konsolenjunkie. [EDITED]

@planetmaker

sudo -u openttd ps xu | grep 'openttd_cpp' | grep -v 'grep' | awk '{print $2}'

Nett, nett. Auch fein zu wissen, dass es offenbar so die gängige Praxis ist.

Danke Leute, werde nun einfach ps-variante ausbauen.

Planung ersetzt Zufall durch Irrtum
(Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2011 16:18 von dungeonmaster.)
10.05.2011 16:17
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
michi_cc
Gleisarbeiter
*

Beiträge: 58
Registriert seit: May 2008
Beitrag #7
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
(10.05.2011 16:17)dungeonmaster schrieb:  Kommt nur "Leerzeichen"/Nix raus, könnte am sudo davor liegen (Rückgabe in anderer Shell?). Bin leider nicht so der Konsolenjunkie.

Die Befehle von Eddi in ein Shell-Skript und das dann mit sudo starten?
10.05.2011 16:41
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
frosch
Geschäftsführer
***

Beiträge: 218
Registriert seit: Mar 2007
Beitrag #8
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
Statt 'ps' und 'grep' hilft auch 'pidof openttd'.

Scheinwissen - Stolz, Selbstreflexion - Resignation
10.05.2011 17:34
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Eddi
Tycoon
*****

Beiträge: 4.066
Registriert seit: Aug 2008
Beitrag #9
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
(10.05.2011 16:17)dungeonmaster schrieb:  @Eddi:

Kommt nur "Leerzeichen"/Nix raus, könnte am sudo davor liegen (Rückgabe in anderer Shell?). Bin leider nicht so der Konsolenjunkie. [EDITED]

vor dem $! muß zwingend eine Zeile mit & am Ende stehen. wie das mit "sudo" zusammenpaßt, weiß ich nicht.
(Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2011 18:30 von Eddi.)
10.05.2011 18:29
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
dungeonmaster
Gleisarbeiter
*

Beiträge: 33
Registriert seit: Dec 2010
Beitrag #10
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
Hab das probiert, aber selbst der Shellscript als root gibt mir nix retour.

Das dürfte aber evt. an "> /dev/null 2>&1" liegen, ansonsten würd er mir ausser der PID oder echos im Script auch die Ausgaben des Servers retournieren.

Trotzdem, das mit dem Script war ne guate, guate Idee (warum ich net selber auf sowas gekommen bin?)

Folgender Script tut nun vorerst was er soll (denk ich), er schmeisst mir nur die PID zurück.
Code:
#!/bin/bash

CMD_AWK="/bin/awk"
CMD_GREP="/bin/grep"
CMD_PS="/bin/ps"

PATH="/mnt/openttd/binary/"
PARM="-d 0 -D -f -x -g $2 -c $3"

# PARAMETER DEFINITION
# v0.1

#$1=game_binary_folder
#$2=sav
#$3=cfg

${PATH}${1}/openttd $PARM > /dev/null 2>&1

$CMD_PS xu | $CMD_GREP "${PATH}${1}/openttd $PARM" | $CMD_GREP -v 'grep' | $CMD_AWK '{print $2}'

Planung ersetzt Zufall durch Irrtum
(Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2011 18:36 von dungeonmaster.)
10.05.2011 18:35
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Eddi
Tycoon
*****

Beiträge: 4.066
Registriert seit: Aug 2008
Beitrag #11
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
(10.05.2011 18:35)dungeonmaster schrieb:  Hab das probiert, aber selbst der Shellscript als root gibt mir nix retour.

Code:
PARM="-d 0 -D -f -x -g $2 -c $3"
hier das "-f" entfernen

Code:
${PATH}${1}/openttd $PARM > /dev/null 2>&1
und hier stattdessen ein & ans Ende packen.

Dann sollte das mit dem $! passen.
(Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2011 19:03 von Eddi.)
10.05.2011 19:01
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
dungeonmaster
Gleisarbeiter
*

Beiträge: 33
Registriert seit: Dec 2010
Beitrag #12
RE: Webserver/Gameserver - Writing PID - PHP-Question Maybe
OK! Vollkommen richtig! Parameter -f entfernt, nun funzts.

EDIT: Ok, das mit dem Stattdessen hab i nun richtig verstanden.

Code:
#!/bin/bash

PATH="/mnt/openttd/binary/"
PARM="-d 0 -D -x -g $2 -c $3"

# PARAMETER DEFINITION
# v0.1

#$1=game_binary_folder
#$2=sav
#$3=cfg

${PATH}${1}/openttd $PARM > /dev/null 2>&1 &

echo $!

Thx@All

EDIT 2: PATH sollte man in Shellscripten net umbedingt verwenden bin i grad draufkommen

Planung ersetzt Zufall durch Irrtum
(Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2011 19:33 von dungeonmaster.)
10.05.2011 19:27
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  TT-MS.de Gameserver Ammler 18 5.723 28.09.2007 13:34
Letzter Beitrag: Ammler
  Forumseigener Gameserver? bugfix 3 1.324 13.01.2006 23:40
Letzter Beitrag: pETe!

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste