ugrás a tartalomhoz

Visszatérés System() -be oldal újratöltés után

pr00g · 2007. Júl. 31. (K), 15.04
Sziasztok!

Megint zaklatnálak titeket egy System() -es kérdéssel.
Az lenne a problémám, hogy amikor system-el elindítok linux-on egy játékszervert az alapból kiírja az oldalra azt, ami éppen a consolban (screen) van. Ha viszont bezárom az oldalt és újra visszamegyek a weboldalra, hogyan tudnám megnézni, hogy éppen mi van a screen-ben?
screen -r PID használata nem lehetséges, mert ahhoz csatlakoznom kéne ssh-ra amit nem szeretnék.

Előre is köszönöm a segítséget, Byez
 
1

log

zila · 2007. Júl. 31. (K), 15.52
Több dolog is felmerült bennem ezzel kapcsolatban:

1. nem indítanék php-ból szervert, illetve nem így. Csinálnék egy indító file-t amiben a kimenetet egy fileba irányítanám vagy logoltatnám a szervert egy naplófileba. Php-ból max ezt az indító scriptet hívnám meg (ez tipikusan init.d-s dolog), illetve még ezt sem. cron indítaná a szervert, phpból csak egy file-t tennék le filerendszerbe amit cronból lehet monitorozni (akár egy fam eventre is lehet kötni, ha nagyon szépen akarod megcsinálni és akkor nem kell cron). Az indító file győződjön meg róla, hogy fut-e már a szerver, ha igen, akkor nem csinál semmit (megakadályozandó az párhuzamos szerverindításokat)

2. a szerver monitorozása ezek után annyiból áll, hogy a naplófile-t vagy a kimenet file-t lehet nézegetni (fopen-nel megnyitod, felolvasod és kiírod a weboldalra) lehet úgy is, hogy az utolsó pár sort olvasod fel és periodikusan frissíted a monitorozó oldalad, ajax-szal vagy anélkül oldod meg a frissülést.

érdemes google-lel szétnézni:
pl. egy lehetséges kiinduló keresés

3. lassan konkrétan elárulhatnád mit szeretnél csinálni nem csak így csepegtetve - ha jól sejtem, egy játék szerver admin felületét fabrikálod, ahol vezérelni és monitorozni lehet ezen szerverek futását.
2

re: log

pr00g · 2007. Júl. 31. (K), 16.51
Pontosan egy olyan felületről van szó. Csakhogy már teljesen kész van. Már csak ez az egy funkció kéne bele.
Van egy start nevű fájlunk ami indítja a szervert. Ebben is van olyan hogy: ha már fut nem indítja el még1x.
De hogyan tudnám loggoltatni a screen?
3

konkrétumok

zila · 2007. Júl. 31. (K), 23.24
Logolhatod a screen-ben lévő ablakok kimenetét:
-L tells screen to turn on automatic output logging for the windows.


Egyébként jó lenne ha nem kéne sötétben tapogatóznom. Mi lenne ha releváns kódrészleteket írnál a kérdéseid mellé? Mit hívsz, hogy hívod?

Én valahogy így képzelem a szerver indítását (ez ugye az inditóscriptben van):
game_serverd >/var/log/gameserver_kimenet.log 2>/var/log/gameserver_errors.log
Tehát a szerver kimenetét és a hibakimenetét file-ba iranyítanám, ezeket a fileokat nézegeted php-ból.

de azért megnézném az opcióit, hátha tud magától is logfile-ba írni és nem csak a stdout-ra.
4

re

pr00g · 2007. Aug. 1. (Sze), 15.55
Próbáltam az általad adott módot. A linuxjournal.com -on is körbenéztem és az ott leírtakat is kipróbáltam, de még csak elsem indult a szerver.

Így néz ki a start file.
screen -dmS STEAM_server ./hlds_run -game cstrike +sys_ticrate 333 +port 27040 +maxplayers 10 -testmodule vactest +map de_dust2


Ebben nincs benne a logolás, mert nem ment és kivettem belőle. Remélem tudsz segíteni, byez
5

persze hogy nem ment

zila · 2007. Aug. 1. (Sze), 20.30
Valahogy így csinálnám (nem próbáltam)
start_steam.sh

#!/bin/bash

STEAM_server ./hlds_run -game cstrike +sys_ticrate 333 +port 27040 +maxplayers 10 -testmodule vactest +map de_dust2 >/var/log/steam.log 2>/var/log/steam.error.log
php

system("screen -dmS steam_server.sh");
De azért megnézném a steam server dokumentációját illetve ezt: Daemonize
6

Daemon

janoszen · 2007. Aug. 1. (Sze), 22.29
Nagyon helyes, tényleg daemonként kellene futni mert egyszer csak valami érthetetlen oknál fogva a fejedre fog omlani a linuxos process modell miatt az egész ha újraindul mondjuk a webszerver... és nem fogod érteni hogy miért.
7

így se megy

pr00g · 2007. Aug. 2. (Cs), 11.30
Hát sajnos így sem sikerült. El sem indult! Csak úgy indul el, ha a start file-ban benne van a screen -AmdS. Próbáltam a -L kapcsolót is, de semmi.
Amikor elindul a szerver, akkor a log fájlok üresen és azok is maradnak.
Jelenleg a /home/steam/LOGS/ mappába logolnék, ha menne. Ötlet?
8

magad ura

zila · 2007. Aug. 2. (Cs), 12.01
Mivel én még sosem telepítettem steam servert, dokumentációját se olvastam így nem tudom miért nem hajlandó a kimenetét file-ba irányítani. Az biztos, hogy a daemon-ként futtatás irányába indulnék el, első körben a php-t ki is hagynám a képből, csak simán konzolban próbálkoznék. Ha konzolról indítod kézzel (semmi screen!) akkor sem írja a kimenetét fileba? Képernyőre ír mindenképpen? Vagy azért a képernyőre sem?
9

fájl se jó

pr00g · 2007. Aug. 2. (Cs), 13.54
Ha simán console-ból próbálom úgy se jó. log-ba nem ír, de ha beírom, hogy screen -r akkor ott jó. Oda ír. A screen alapból nem ír vhova?
10

jaj

zila · 2007. Aug. 2. (Cs), 14.08
A screen -r egy már futó screenhez kapcsolódik, vagyis egy screen-ben már fut a steam...
Mint mondtam a kályhától kéne elindulni. Állíts le minden futó steam szervert, screen-t és lépésenként haladj.
1. steam szerver indítása normál (NEM SCREEN) konzolon
2. steam szerver indítása normál konzolon kimeneteit file-ba irányítva
3. steam szerver indítása daemonként a daemonize-zal
4. steam szerver indítása daemonként a daemonize-zal, kimenei file-ba irányítva
5. php használata a 4.pont megvalósítására
6. php használata a steam logok megjelenítésére
7. megoldás beküldése a fórumra :)
11

neeeem jóó

pr00g · 2007. Aug. 2. (Cs), 16.41
Screen nélkül szuperül loggol ahova én szeretném. De screen-el nem megy :(
Muszály lenne screen-el futtatni, hogy a felhasználók beletudjanak nézni.
A http://www.hmug.org/man/1/screen.php oldalon sem találtam semmit.

Így megy.
./hlds_run -game cstrike .... >/home/steam/LOGS/STEAM_server.log


Így viszont nem
screen -AmdS STEAM_server ./hlds_run -game cstrike >/home/steam/LOGS/STEAM_server.log


Próbáltam a screen-nél az -L kapcsolót, de semmi. Ötlet?
12

admin felület vs terminal

zila · 2007. Aug. 2. (Cs), 23.08
Nem értem. Épp egy admin felületet csinálsz, amivel a userek meg tudják nézni mi a rajz. Ha nem screenben indítod, a kimenet szépen egy naplófile-ba kerül. Az admin felületeden ezt a naplófile-t kell beolvasnod és kiraknod a usernek....

shellből meg szintén tudod olvasni a naplófilet.

De ha mindenáron screenelni akarsz, akkor indítsd a szervered screen nélkül + utána indíts egy

screen -AmdS tail -f /home/steam/LOGS/STEAM_server.log 
parancsot. Ehhez a screenhez aztán később csatlakozhatsz a screen -r parancssal.
14

retek

pr00g · 2007. Aug. 3. (P), 15.00
Persze hogy adtam jogot...
Amúgy sehogy nem megy. Hiába indítom el screen nélkül, utánna nem tudom screen-be rakni úgy hogy logoljon.
És én alapból úgy szeretném, hogy ne kelljen semmit beírogatni csak rányom a user a start file-ra és elindul screen-el logolva. Eddig is így volt és nem hinném hogy a user-ek örülnének neki, hogyha megkéne tanulniuk elindítani a szerverüket. Pont jó nekik ha rányomnak a start file-ra.
És a webes rendszert sem szeretném átírni.

Privát ment.
13

itt megütötte valami a szememet

zila · 2007. Aug. 2. (Cs), 23.12
Ugye adtál futási jogot a start_steam.sh-ra mielőtt kipróbáltad a screen start_steam.sh-t???
15

ötlet?

pr00g · 2007. Aug. 6. (H), 21.04
Semmi ötlet?