LadyRoot Napisano Styczeń 12, 2009 Zgłoszenie Share Napisano Styczeń 12, 2009 Witam, mam następujący problem: utworzyłam demona zarządzającego aplikacją do przetwarzania zamówień. Aplikacja jest w javie, stąd wywołanie wygląda w ten sposób: daemon java -Dlogs.myclass="/usr/tomcat5/webtools/OrderProcessor/myclass.cfg" -Dconfig.myclass="/usr/tomcat5/webtools/OrderProcessor/ Myclass_orderprocessor.cfg" -cp "/usr/tomcat5/webtools/OrderProcessor/all_order_processor.jar" mainclass.orderprocessor.myclass.MCOrderProcessor myclass </dev/null>>/var/log/OP/logfile& Trochę zagmatwane, ale takie właśnie wywołanie dostarczyli mi programiści. I teraz przeglądając sobie drzewo procesów widzę: init->OrderProcessor->bash->java->10*[{java}] Pytanie: w jaki sposób utworzyć skrypt ubijający OrderProcessor? Ubicie samego OrderProcessora (killproc OrderProcessor) skutkuje pojawieniem się takiego drzewa procesów: init->bash->java->10*[{java}] A zatem zabicie rodzica nie skutkuje zabiciem całego drzewa, a jedynie przeniesieniem jego potomstwa na wyższy poziom. Jakiś pomysł to zabicie procesu java (tu wszystkie klony są unicestwiane), ale to skutkuje również zabiciem innych aplikacji korzystających z engine'u (np. Tomcat-a). Inny pomysł to demon pracujący na prawach nowego użytkownika (z prawami admina) i ubijanie ewentualnie całego SID-a tego użytkownika. Tylko - w jaki sposób automatycznie uruchamiać demony należące do konta nie-systemowego? z góry dzięki za podpowiedź Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
arni Napisano Styczeń 12, 2009 Zgłoszenie Share Napisano Styczeń 12, 2009 man killproc opcja -G Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
olesku Napisano Styczeń 13, 2009 Zgłoszenie Share Napisano Styczeń 13, 2009 A jeśli będziesz miała PID interesującego Cię procesu? Możesz go sobie wydobyć np. z "ps -ef" za pomocą prostych operacji na stringach. Czyli w skrypcie ps -ef | grep -i orderprocessor | grep -v grep Wynik będzie coś jak (tu dla CUPS-a): root 4435 1 0 10:26 ? 00:00:00 /usr/sbin/cupsd i bierzemy do zmiennej ciąg znaków po pierwszych znakach białych (kilku spacjach) do następnych. A potem oczywiście kill zmienna Ze zwykłym procesem nie byłoby problemu w ten sposób, natomiast nie znam się na własnych demonach. Demony usług systemowych zatrzymujesz "nazwa stop", ale tu pewnie nie ma tak łatwo? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Adi1981 Napisano Styczeń 22, 2009 Zgłoszenie Share Napisano Styczeń 22, 2009 ps -ef | grep -i orderprocessor | grep -v grep root 4435 1 0 10:26 ? 00:00:00 /usr/sbin/cupsd kill zmienna To samo uzyskasz jednym prostym poleceniem kill `pidof OrderProcessor` , tyle że LadyRoot napisała że ubicie tego procesu nie przynosi porządanych efektów. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
maiKel Napisano Styczeń 22, 2009 Zgłoszenie Share Napisano Styczeń 22, 2009 jeszcze jeden taki fajny trik odemnie (znalazłem go czytając "jakiś" poradnik do "czegoś", nie pamiętam:P) zamiast pisać (przynajmniej używając grepa w potoku z ps): grep nazwa | grep -v grep można: grep [n]azwa Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
LadyRoot Napisano Styczeń 25, 2009 Autor Zgłoszenie Share Napisano Styczeń 25, 2009 Odpowiem sobie sama, bo może komuś się przyda. Najprostszy sposób okazał się najbardziej skuteczny cp /usr/bin/java /usr/bin/mojprogram ..a potem zmieniam wywołanie: daemon java (...) na daemon mojprogram (...) i w skrypcie demona dla polecenia stop wystarczy: killproc mojprogram Aż mi głupio, że to takie proste było... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
olesku Napisano Kwiecień 8, 2009 Zgłoszenie Share Napisano Kwiecień 8, 2009 Ciekawie to wymyśliłaś. Jeszcze tak dla sportu dodam coś, odnośnie tej podanej przez Ciebie metody z ubijaniem całego procesu java. Można potomne procesy, jak wspomniany tomcat, wyłączyć spod działania procesu macierzystego. W ten sposób po zakończeniu macierzystego, potomek (tomcat) dalej działa. disown -h PID Wyczytałem to w "100 sposobów na Linux server" Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się