PID eines Prozesse mit PHP auslesen

h4dhunTer

Erfahrenes Mitglied
Hallo,
ich habe ja nun schon mehrfach hier im PHP Forum etwas über Prozesse erfragt und bin zu einigen lösungen gekommen, aber leider dadurch auch zu problemen,

Ich starte eine Prozess mit system(); und beende es mit exec();. Ich muss den Prozess mit system(); starten, weil er sonst die Seite nicht zuende läd.

Da ich ein Webinterface baue und mit Shoutcast arbeite, laufen mehrere Server. Ich kann jeden einzelnen Starten, aber wenn ich einen Beenden will, killt er alle Prozesse die mit Shoutcast in verbindung sind.

Mein Code zum Killen:
PHP:
<?
exec('killall -9 /srv/www/vhosts/domain/httpsdocs/login/shoutcast/sc_serv /srv/www/vhosts/domain/httpsdocs/login/shoutcast/sc_serv0'.$_SESSION['id'].'.conf');
?>
Anscheinend macht killall -9 alle Prozesse die was mit /srv/www/vhosts/domain/httpsdocs/login/shoutcast/sc_serv zu tun haben aus.

Nun zu meiner Frage. Kann ich mit PHP beim Starten eines Shoutcastservers die PID auslesen und in eine Datenbank speichern?
Ich habe gesehen, wenn ich Shoutcast starte, schreibt er mir "[main] pid: xxxxx". Nun könnte ich ja mit system(); den befehl starten und dann auslesen, aber leider geht das nicht, da system(); arbeitet, bis ich den browser schliese. Das heißt, er führ alles was nach dem Befehl system(); kommt, nicht aus.
Hat da jemand vielleicht eine Lösung?

Vielen Dank schonmal. :-)
 
Aber killall -9 is doch auch falsch oder net.

Also wenn ich auf meine Linux Maschine nen Prozess killen will.....z.b. nen Bouncer oder nen Gameserver oder sonst was , dann lass ich mir erstma mit

--> ps -efa |grep NameDesProzesses (z.b. srcds) die Prozesse ausgeben....davor stehen nummern

und die kann man dann einzelnd mit

--> kill -9 NummerDesProzesses killen.

Vielleicht hilft dir das ja ;-)

MFG Niels
 
Hallo,
verstehe ich nicht. Wenn ich mit ps -efa |grep meinen Prozess abfrage, kommt dabei nichts raus.

Hat nicht noch jemand eine lösung?
 
Äh aber machst das schon per shell ne?!

da musste dann halt nur ps -efa |grep sc_serv eingeben.

Weil wenn ich reichtig verstehe ist die datei, die den Prozess startet sc_serv oder?!

Oder wenn du dem Prozess nen anderen Namen gegeben hast, dann musste den halt mit dem namen aufrufen ;-)

MFG Niels
 
Hallo,
okk nun zeigt er mir was an:

wwwrun 28200 32562 0 13:09 ? 00:00:00 /srv/www/vhosts/domain/httpsdocs/login/shoutcast/sc_serv /srv/www/vhosts/domain/httpsdocs/login/shoutcast/sc_serv02.conf
wwwrun 28321 23659 0 13:10 ? 00:00:00 /srv/www/vhosts/domain/httpsdocs/login/shoutcast/sc_serv /srv/www/vhosts/domain/httpsdocs/login/shoutcast/sc_serv01.conf
root 28426 28098 0 13:10 pts/0 00:00:00 grep sc_serv
Also bekomme ich da schonmal Zahlen u.s.w. Nun habe ich das per Programm gemacht. Kann ich das nun mit PHP machen und die Zahlen die ich brauche raussuchen und dann den Prozess killen?
 
Zurück