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