Üdv.
Egy olyan problémám lenne, hogy van egy adott user a linux rendszerbe (pl: Gipsz Jakab)
Nah már most ez a Jakab gyerek szeretne több mindent futtatni az ő saját profilján belül.
Hogyan tudnám megoldani azt, hogy ha elindít valamit akkor annak a folyamatnak a PID értékét eltudjam menteni MySQL adatbázisban hogy majd webről PHP segítségével ha szükséges leállíthassam a folyamatot és akár egy újat indítsak helyette.
- 925 megtekintés
Hozzászólások
MIért kellene ehhez MySQL? Amikor a PHP scripted fut, megnezi, ki milyen processzeket futtat (ps parancs), es ez egy aktualis kepet ad a rendszerrol. Ha adatbazisba mentened el, akkor ki is kene onnan venni, amikor a processz leallt, gondolni kellene arra, hogy mi van akkor, ha nem te lovod le a processzt, hanem a user, stb.
- A hozzászóláshoz be kell jelentkezni
értem amit mondasz
nah akkor mondjuk én vagyok az admin és mondjuk van 2 user
ugye nekem mindenhez van jogom így akár elindíthatom és leállíthatom a user dolgát
de ha a user is le szeretné állítani a dolgát vagy elakarná indítani akkor ő hogyan csinálja? és ha nem 1 dolgot akar indítani hanem mondjuk 2-őt akkor azt hogyan különbözteti meg hogy most melyiket állítsa le
ezért kellene nekem egy valami olyan parancs amivel ha lefut a PHP script akkor megkapjam mi volt az elindított folyamat PID-je és ha már ez megvan akkor nincs semmi problémám.
Tehát nekem csak egy olyan dolog kellene amivel a PHP script lefutása után megkapom a PID-et és kész
- A hozzászóláshoz be kell jelentkezni
a fentebb írt a megoldás szerintem. ps -el ki tudod listáztatni az adott user-hez az általa indított folyamatokat.
vagy ha egy processnek kell a PID-je, és abból is a legújabban indított, akkor pgrep -n folyamat neve. kilőni meg kill `pgrep -n folyamat` akár - de lehet hogy félreértelmezem hogy mit szeretnél.
- A hozzászóláshoz be kell jelentkezni
nah akkor írok egy másik példát
pl az egyik user elindít két különböző játékszervert
Első: screen -A -m -d -S cod4 /home/neve/cod4_lnxded +set net_port 28960 +set sv_punkbuster 1 +exec server.cfg +sv_maxplayers 12
majd
Második: Első: screen -A -m -d -S cod4 /home/neve/cod4_lnxded +set net_port 28961 +set sv_punkbuster 1 +exec server.cfg +sv_maxplayers 24
A kettő annyiben különbözik hogy az egyik 12 a másik 24 férőhelyes
és ha elindítja őket akkor ugye lesz nekik egy PID-je de ha a kill `pgrep cod4_lnxded` parancsot használom akkor mind a kettőt leállítja majd.
Ezért akarnám hogy a PID-je legyen meg mert akkor konkrétan csak azt fogja leálíltani
- A hozzászóláshoz be kell jelentkezni
Picit szofisztikáltabban keresve a ps kimenetében máris meglelheted a megoldást... Ja, a kettő a /proc/PID/cmdline -ban is különbözik, ami alapján azért el lehet dönteni, hogy melyik melyik...
- A hozzászóláshoz be kell jelentkezni
mi lenne ha a ps kimenetés kitennéd egy olyan html-be php-vel, aminek minden sora egy check box, és a bepipált dolgokra nyomhatnál alul gombot, pl: kill, vagy pause vagy akármi.
neked a teljes ps kimenetet, a user-eknek meg csak a user processra vonatkozóan (pl. bizonyos PID szám feletti értékeket, valamihez viszonyíthatnád, hogy a user csak az utólag általa indítottakat lássa ha lenne más folyamat is a nevében már)
- A hozzászóláshoz be kell jelentkezni