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.