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
Set Up SSH Tunneling on a Linux / Unix / BSD Server To Bypass NAT
Viewed 10996 times since Fri, May 15, 2020
RHEL: Display swap/RAM size
Viewed 2938 times since Sat, Jun 2, 2018
debian How to check Debian CVE status using python script
Viewed 3301 times since Sun, Sep 23, 2018
WatchDog watchdog.sh script for checking server running
Viewed 5057 times since Tue, Jul 31, 2018
Cron YUM How to use yum-cron to automatically update RHEL/CentOS Linux
Viewed 2188 times since Fri, Oct 26, 2018
Procedura powiekszania OCFS2 online
Viewed 5180 times since Fri, Jun 8, 2018
RHEL: Crash kernel dumps configuration and analysis on RHEL 5
Viewed 6691 times since Sat, Jun 2, 2018
LVM: Remove an existing Volume Group
Viewed 4907 times since Sat, Jun 2, 2018
Need to set up yum repository for locally-mounted DVD on Red Hat Enterprise Linux 7
Viewed 2723 times since Mon, Oct 29, 2018
Extending Linux LVM partitions - scripts
Viewed 6276 times since Sun, May 20, 2018