23.10. Niszczenie wszystkich procesów wybranego użytkownika
Problem
Potrzebny jest łatwy sposób niszczenia wszystkich działających procesów określonego użytkownika, które wymknęły się spod kontroli.
Rozwiązanie
Można skorzystać z metody Process.kill
w celu przesłania sygnału systemu Unix (włącznie z „zabójczym” sygnałem SIGTERM
lub jeszcze bardziej „zabójczym” sygnałem SIGKILL
) z poziomu kodu w Ruby. Jak jednak uzyskać listę procesów wybranego użytkownika? Najprostszym sposobem jest wywołanie uniksowego polecenia ps
i przeanalizowanie wyniku. Uruchomienie polecenia ps -u#{nazwa_uzytkownika}
zwraca listę procesów wskazanego użytkownika.
#!/usr/bin/ruby -w # banish.rb def signal_all(username, signal) lookup_uid(username) killed = 0 %x{ps ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.