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
stunnel bacula
Viewed 1978 times since Fri, Sep 28, 2018
Top 4 Reasons for Node Reboot or Node Eviction in Real Application Cluster (RAC) Environment
Viewed 90013 times since Thu, Jun 21, 2018
How to Analyze or Read OS Watcher Output in three easy steps -- With Example ?
Viewed 41350 times since Thu, Jun 21, 2018
LVM: Extend an existing Volume Group by adding a new disk
Viewed 1981 times since Sat, Jun 2, 2018
A tcpdump Tutorial and Primer with Examples
Viewed 5019 times since Sun, Jun 17, 2018
Index » Community Contributions » System encryption using LUKS and GPG encrypted keys for arch linux
Viewed 3032 times since Fri, Jul 13, 2018
Red Hat 8 How to Set Up Automatic Updates for CentOS 8
Viewed 3588 times since Fri, Sep 25, 2020
OEL 7 – How to disable IPv6 on Oracle Linux 7
Viewed 20162 times since Fri, Aug 3, 2018
Using IOzone for Linux disk performance analysis
Viewed 7593 times since Wed, Jul 25, 2018
RHEL: Force system to prompt for password in Single User mode
Viewed 7176 times since Sat, Jun 2, 2018