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
Use Fail2ban to Secure Your Server
Viewed 1480 times since Fri, Jul 5, 2019
Creating SWAP partition using FDISK & FALLOCATE commands
Viewed 266 times since Thu, Jan 16, 2020
RHEL7: Create and configure LUKS-encrypted partitions and logical volumes to prompt for password and mount a decrypted file system at boot.
Viewed 1054 times since Mon, Aug 6, 2018
How To Set Up an SSL Tunnel Using Stunnel on Ubuntu
Viewed 713 times since Fri, Sep 28, 2018
Yum Update: DB_RUNRECOVERY Fatal error, run database recovery
Viewed 279 times since Fri, Jan 17, 2020
Jak wygenerować silne hasła jednorazowe w Linuksie?
Viewed 844 times since Thu, May 24, 2018
Jak znaleźć najszybszy publiczny serwer DNS w Polsce?
Viewed 961 times since Mon, May 21, 2018
LVM: Rename root VG/LV
Viewed 971 times since Sat, Jun 2, 2018
10 nmap Commands Every Sysadmin Should Know
Viewed 570 times since Wed, May 22, 2019
RHEL: Rebuilding the initial ramdisk image
Viewed 1495 times since Sat, Jun 2, 2018