Perl, Shell und andere Waffen

Perl, Shell und andere tödliche Waffen


kill -9 StarOffice



Laut Murphys Gesetz wird alles, was schiefgehen kann, genau dann schiefgehen, wenn es den größten Schaden anrichtet. Für die Redaktion der Zeitung bedeutet das: StarOffice hängt sich 10 Minuten vor Redaktionsschluss auf.


Das kann eine erfahrene UNIX-Frau natürlich nicht erschüttern. Mit Strg-Alt-F1 wechselt sie in die Konsole, mit ps ux sieht sie sich eine Liste ihrer Prozesse an, und mit kill <prozess-id>
beendet sie den entsprechen Prozess.

Soweit die Theorie. Die Praxis erwies sich als etwas komplizierter. Mit dem „normalen“ kill ließ sich StarOffice nämlich nicht beeindrucken. Also fährt unsere Redakteurin schärfere Geschütze auf: kill -9 <prozess-id>
.


Doch was antwortet der Computer: „Sorry, Dave…

No no no. Don't use kill -9. [..]mapped command to kill -15. 

Um ein kill -9 abzusetzen, müsste frau einen Techniker holen. So geht’s ja wohl nicht. Unsere tapfere Redakteurin greift nach der Schweizer Taschen-Kettensäge: Perl. Mit perl -e ‚kill -9, <pnr>‘ kann sie endlich den Prozess erlegen.


Nun hat aber StarOffice nicht nur einen Prozess gestartet, sondern eine ganze Schar davon. Mit ps ux
kann man sie alle sehen. Nun greift die Redakteurin zur Pipe.

ps ux

zeigt alle Prozesse.
 

Ps ux | grep Of

zeigt nur noch die StarOffice-Prozesse.
 

ps ux |grep Of |cut -c8-15

schneidet aus der Prozessliste die Spalte 8 bis 15, dort steht die Prozessnummer.
 

ps ux | grep Of | cut\ -c8-15 | perl -n -e \ ‚kill 9, $_‘

mit der Option -n macht Perl eine Schleife über die Zeilen des Inputs und schreibt die jeweils aktuelle Zeile (die die Prozessnummer enthält) in die Variable $_
 

Und weil’s so schön ist und morgen sicher auch wieder gebraucht wird, kommt das ganze in ein shell-Skript namens ‚killoffice‘. Waidmanns Heil!


#!/bin/sh ps uxf | grep Of | cut \ -c8-15 | perl  -n -e 'kill 9, $_;' 


Brigitte


von Brigitte