Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kontrola procesów UNIX
misiek08
post
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 6
Dołączył: 2.02.2008

Ostrzeżenie: (10%)
X----


Witam!
Udostępniałem serwery gry na serwerze dedykowanym z systemem Windows i wykorzystywałem tam polecenia takie jak:
  1. <?php
  2. exec("xxx.exe /cfg=xxx.cfg");
  3. ?>

i po prostu:
  1. <?php
  2. `xxx.exe /cfg=xxx.cfg`
  3. ?>

To wszystko działało i serwery też śmigały. Natomiast teraz muszę przerzucić się na Debian 5. I mam pytanie z działu PHP/Debian:
Jakich poleceń mam używać do uruchamiania procesów w tle(podejrzewam że trzeba tutaj użyć screen'a), a także do ich wyłącznia.
Najważniejsze jest to że mam ok. 10-15 folderów i w każdym uruchamia się to samo polecenie i teraz jak dokonać identyfikacji procesów żeby 1 klient nie wyłączał wszystkich serwerów na maszynie.
Jak do PHP przyjąć ID procesu po włączeniu go w screenie i jak potem tak proces zabić.
Go to the top of the page
+Quote Post
okitoki
post
Post #2





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

Ostrzeżenie: (20%)
X----


faktycznie tematyka PHP (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . serwer jest na windows a ty chcesz przejść na linux, to nie będzie takie proste wiesz w windzie mogłeś robić co ci się jawnie podobało, a na linuxie niestety, waładzę ma admin i nie wszystkie programy tu ci pójdą a jeżeli chodzi o procesy w linuxie to jest polecenie "ps -aux" do zabijania jest kill i tak dalej,

Ten post edytował okitoki 8.05.2009, 12:42:16
Go to the top of the page
+Quote Post
Zyx
post
Post #3





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


okitoki -> ja wiem, że polska język trudna, ale od czego jest choćby głupi Word?

misiek08 -> w systemach uniksowych exec() itd. korzystają z powłoki sh (konkretniej jakiegoś jej klonu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) do odpalania innych programów. Po prostu musisz wykorzystać składnię tej powłoki do osiągnięcia żądanego efektu. Nie wiem, jak stoisz z wiedzą nt systemów uniksowych, więc ciężko coś więcej konkretnie doradzić. Na pewno możesz mieć problemy z uprawnieniami, gdyż tutaj bezpieczeństwo ma znacznie wyższy priorytet niż w Windowsie.

Uruchamiając program w tle, musisz zakończyć wywołanie znakiem & - ponadto sam PHP nakłada Ci ograniczenie, że musisz przekierować wyjście procesu do pliku, /dev/null albo co tam chcesz, inaczej się on zwiesi i będzie oczekiwać na zakończenie działania. Przykład:

Kod
exec('./program > /dev/null 2>&1 &');


Do przeglądania listy procesów możesz użyć polecenia ps, ale nie w takiej formie, jak podał ją okitoki. Raz, że jeśli już aux, to bez pauzy, a dwa, że te opcje wyplują Ci o wiele za dużo niepotrzebnych danych. Poczytaj sobie manual i dobierz to, czego potrzebujesz. Kontrolę przebiegiem wykonywania procesów realizujesz poleceniem kill, które służy (wbrew temu, co sugeruje nazwa) do wysyłania sygnałów.
Go to the top of the page
+Quote Post
misiek08
post
Post #4





Grupa: Zarejestrowani
Postów: 91
Pomógł: 6
Dołączył: 2.02.2008

Ostrzeżenie: (10%)
X----


Tzn moja wiedza nie jest zbyt duża, i jak pisałem jestem zmuszony kupić serwer dedykowany z linux'em.
Myślę że dobre będzie polecenie:
Kod
exec('screen wine ./xxx.exe /cfg=xx.cfg');

Tylko teraz jak z tego wyciągnąć z tego ID procesu żeby wykorzystać potem przy kill?

Może zrobić tak że każdy ten exe ma nazwę wg wzoru:
xx1.exe
xx2.exe ?

Ten post edytował misiek08 8.05.2009, 13:36:11
Go to the top of the page
+Quote Post
okitoki
post
Post #5





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

Ostrzeżenie: (20%)
X----


no nic, zostaje ci przetestować to na żywym organizmie, tzn na debianie. jak to będzie twój serwer to lepiej to uruchom w wierszu shell-u, będzie większe prawdopodobieństwo że Ci to pudzie.
Go to the top of the page
+Quote Post
osl
post
Post #6





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


wyciąganie ID procesu - jedyne co mi do głowy przychodzi na szybko to kombinacja ps+grep+cut - słowem, coś w guście skryptów shellowych (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
misiek08
post
Post #7





Grupa: Zarejestrowani
Postów: 91
Pomógł: 6
Dołączył: 2.02.2008

Ostrzeżenie: (10%)
X----


A może PHP niech wywołuje skrypty basha. Jak to jest z przechwytywaniem w PHP tego co bash chce powiedzieć światu?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 13:58