Zabijanie wszystkich procesów użytkownika

Z

ałóżmy, że z jakiegoś typowego powodu (zabieranie zbyt dużej ilości zasobów systemowych lub przepustowości łącza) chcemy zabić wszystkie procesy użytkownika. Oczywiście znamy komendę: skill -9 -u użytkownik, ale załóżmy, że użytkownik ten ustawił węzeł z podłączonym agentem, który za każdym zabitym procesem uruchamia nowy, po zabiciu agenta proces uruchamia kolejnego agenta…

W tej sytuacji przydałby się skrypt, który w pętli będzie tak długo zabijał procesy użytkownika aż wszystkie zostaną finalnie zakończone. Skrypt taki stworzył David Brock:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
USER=$1
MYNAME=`basename $0`
if [ ! -n "$USER" ]
 then
  echo "Użycie: $MYNAME użytkownik" >&2
 exit 1
  elif ! grep "^$USER:" /etc/passwd >/dev/null
 then
  echo "Użytkownik $USER nie istnieje!" >&2
 exit 2
fi
while [ `ps -ef | grep "^$USER" | wc -l` -gt 0 ]
 do
  PIDS=`ps -ef | grep "^$USER" | awk '{print $2}'`
  echo "Zabijam " `echo $PIDS | wc -w` " procesów użytkownika $USER."
 for PID in $PIDS
  do
   kill -9 $PID 2>&1 >/dev/null
 done
done
echo "Użytkownik $USER nie posiada już żadnych uruchomionych procesów."

Oto wynik działania skryptu, który musiał przetworzyć podwójnie pętle, aby unicestwić wszystkie procesy użytkownika agresor:

root@narf:~ # ./killem.sh agresor
Zabijam 7 procesów użytkownika agresor
Zabijam 2 procesów użytkownika agresor
Użytkownik agresor nie posiada już żadnych uruchomionych procesów.

Pętla takiego skryptu potrafi wykonać się szybciej, niż podniesienie kolejnego procesu czy agenta, w ten sposób zabicie wszystkich procesów będzie tylko kwestią czasu.

0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
How to Register and Enable Red Hat Subscription, Repositories and Updates for RHEL 7.0 Server
Viewed 15589 times since Mon, Oct 29, 2018
How to Analyze or Read OS Watcher Output in three easy steps -- With Example ?
Viewed 44110 times since Thu, Jun 21, 2018
Split and Reassemble files
Viewed 4240 times since Mon, May 28, 2018
high swap space utilization in LINUX
Viewed 7336 times since Fri, Jul 13, 2018
Linux / UNIX: Run Command a Number of Times In a Row
Viewed 16614 times since Tue, Aug 6, 2019
How to remove CTRL-M (^M) characters from a file in Linux
Viewed 3523 times since Thu, Feb 7, 2019
UUIDs and Linux: Everything you ever need to know [Update]
Viewed 5717 times since Tue, Jul 17, 2018
Linux Kernel /etc/sysctl.conf Security Hardening
Viewed 24606 times since Fri, Aug 3, 2018
OpenSSL – sprawdzanie czy klucz pasuje do certyfikatu
Viewed 3363 times since Thu, May 24, 2018
8 Vim Tips And Tricks That Will Make You A Pro User
Viewed 3882 times since Fri, Apr 19, 2019