ugrás a tartalomhoz

PHP-ban parancs futtatás/leállítas

ToMee520 · 2008. Május. 1. (Cs), 14.52
Kerdesem az lenne, hogy meg e lehet valahogy csinalni azt php ben elinditok valamit utánna meg lealitom ugyna azt ugyan ugy egy .php fileval

start.sh kod:
$output = shell_exec("/home/cod228963/cod_2/COD2.sh");
COD2.sh kod:
cd /home/cod228963/cod_2/
./cod2_lnxded_ded
Most ezt valahogyan meg kellene határoznom mikor elindul, akkor tobbszor ne tudjak elinditani, es ennek a lealitasat es ha meg lehet azt hogy ne www-data user ben fusson. Ha valaki tudna segiteni megkoszonnem.
Az a baj pid et nem lehet meghatározni ugyan is random :(

Feher Tamas
 
1

Miért ne lehetne?

janoszen · 2008. Május. 1. (Cs), 18.10
Miért ne lehetne a PID-et meghatározni? Legrosszabb esetben ps aux paranccsal, de ha jól értem a kevéssé összeszedett mondataidból, akkor Te egy daemont szeretnél futtatni, ami figyel a háttérben. Namost van egy rossz hírem: nem jó fele indultál el. PHP-ból ne akarj daemont indítani. Hogy miért nem? Ismerkedj meg a Unix processz modellel és akkor rájösz, hogy ha webszerver alól indítod, nem tudhatod hogy mágikus módon és egészen meglepő helyzetekben miért dől a fejedre az egész.

Ami a felhasználó váltást illeti, su esetleg sudo parancs a barátod. :)
2

nem arra.

ToMee520 · 2008. Május. 1. (Cs), 18.34
felhasználó váltással kapcsolatban nem arra gondoltam.
3

ne tedd

yaanno · 2008. Május. 2. (P), 10.10
szvsz ne tedd ezt :) egyrészt, sohasem lehetsz biztos abban, hogy a processz leállítás sikeres lesz; másrészt rendszerszintű folyamatokat ne rendszeren "kívüli" indítással próbálj megoldani: úgy értem, mondjuk a webről elérhető php ne tudja közvetlenül elindítani a folyamatot, inkább egy cronjob figyelje a webes környezetedet és ha ott történik valami, akkor a cronjob indítsa/állítsa le a folyamatot.

remélem nem értettelek félre
4

egy reszt

ToMee520 · 2008. Május. 2. (P), 11.18
Értem mire gondolsz, de az a baj enyire nem értek még a dolgokhoz :( erdekes is lenne hogy mindent a www-data,
futtat.
5

Mi a feladat?

janoszen · 2008. Május. 2. (P), 14.18
Szerintem, lényeges előrelépést tudnánk tenni a probléma megoldása érdekében, hogy ha az általad vizionált megoldás helyett azt mondanád el, hogy mi a feladat. :)
6

letre szeretnek

ToMee520 · 2008. Május. 2. (P), 14.43
Letre szeretnek hozni egy webadmin nevezetu feluletet ahol egy user eltudja inditani a szerveret es lallitani,

es ha meg lehet ugy oldalni, hogy ne www-data futtasa hanem maga az user akié?.
7

Mivan?

janoszen · 2008. Május. 2. (P), 16.58
Ezt most nem értem. Szerver mint szerver vas?

www-data: felejtsük el ezeket a kérdéseket, ezzel nem jutunk dülőre, mert azt se tudjuk hogy mit szeretnél. Próbáld meg érdelmesen és összeszedetten elmondani, milyen körülmények között mit próbálsz meg megvalósítani. Lehet, hogy sikerül megspórolnunk egy pár nap szívást azzal, hogy értelmesen fogalmazol. Sejtem, mit szeretnél, de kicsit részletesebben el kellene mondanod.
8

van adott jatek

ToMee520 · 2008. Május. 2. (P), 17.07
Jatek szervereket akarok kezelni webadmin on keresztul, es ezt szeretnem ugy megcsinalni hogy az indito.sh-t
egy megadott pl: start.php inditson majd el, pesze ehez kell majd egy login rendszer es a login rendszeren belul lesz a jatek szerver leallitasahoz es inditasahoz levo gomb.

remelem igy mar talan atlathatobb lesz,Debian on akarom ezt megvalositani.
9

Így már értelmes.

janoszen · 2008. Május. 2. (P), 17.50
No, így már értelmes, amit akartál mondani. Azt semmiképp nem javaslom, hogy a PHP-vel közvetlenül tegyél bármit a rendszeren. Lehet próbálkozni, nem ajánlom. Ha nem akarsz sok fejfájást, akkor csinálsz mondjuk egy MySQL táblát, amelyikbe a júzerek beszúrják az újraindítási kérelmeiket és percenként futtatsz egy cronjobot, ami nézegeti ezt a táblát, majd beírja ugyanabba, hogy ok, újraindult.

Ha bonyolultabb megoldást szeretnél, akkor FastCGI-zhetsz, amivel tologathatod a daemon restartot. Ez szopás.

Ha még bonyolultabb megoldást szeretnél, akkor megnézegetheted, hogy a gameszerver fogad-e valamilyen interfészen kéréseket, stb. és játszhatsz azzal.

Lehetőség adott, szerintem az elsőt válaszd, főleg ha nincs sok tapasztalatod a dologban. Arra figyelj, hogy mi van akkor, ha a restart lehal.