Prozesse automatisch beenden...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Prozesse automatisch beenden...

Beitrag von ManfredG » 11.12.2010 00:38:04

Hallo zusammen,
ich suche nach einer möglichst einfachen Lösung mit der ich bestimmte Prozesse, welche schon sehr lange laufen nach einer bestimmten Zeit automatisch beenden kann.

Z.B. alle Perl Prozesse sollen automatisch beendet werden, wenn diese seit mehr als 4 Stunden laufen.
Habt Ihr dazu eine Lösung?

Liebe Grüße
Manfred

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Re: Prozesse automatisch beenden...

Beitrag von SubOptimal » 11.12.2010 23:25:40

Hi,

leider lässt Deine Beschreibung den Schluss zu, dass Du nach einer Lösung suchst, die eventuell ins Auge gehen kann. Daher hier keine fertige Lösung, aber ein möglicher Ansatz.

1. alle Prozesse finden, die vor mehr als 240 Minuten gestartet wurden, das Unterverzeichnis in /proc ist die PID, in cmdline findet sich später, wie der Prozess gestartet wurde

Code: Alles auswählen

find /proc -maxdepth 2 -type f -wholename "/proc/[0-9]*/cmdline" -cmin +240
2. in den gelieferten cmdline Einträgen suchen ob sie mittels /usr/bin/perl gestartet wurden, wurden sie so gestartet, dann nur den Dateinamen anzeigen

Code: Alles auswählen

find /proc -maxdepth 2 -type f -wholename "/proc/[0-9]*/cmdline" -cmin +240 | xargs egrep -asl "^/usr/bin/perl"
3. zum Ende aus den vollständigen Pfaden die PID extrahieren, das ergibt diesen schönen Einzeiler

Code: Alles auswählen

(find /proc -maxdepth 2 -type f -wholename "/proc/[0-9]*/cmdline" -cmin +240 | xargs egrep -asl "^/usr/bin/perl" ) | cut -d "/" -f 3 
Damit erhältst Du die PIDs von allen Prozessen die vor mehr als 240 Minuten mittels /usr/bin/perl gestartet wurden.

SubOptimal

Antworten