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
Prozesse automatisch beenden...
- 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...
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
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
3. zum Ende aus den vollständigen Pfaden die PID extrahieren, das ergibt diesen schönen Einzeiler
Damit erhältst Du die PIDs von allen Prozessen die vor mehr als 240 Minuten mittels /usr/bin/perl gestartet wurden.
SubOptimal
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
Code: Alles auswählen
find /proc -maxdepth 2 -type f -wholename "/proc/[0-9]*/cmdline" -cmin +240 | xargs egrep -asl "^/usr/bin/perl"
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
SubOptimal