[gelöst] PID des am längsten laufenden Prozesses?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
GregorS
Beiträge: 2596
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

[gelöst] PID des am längsten laufenden Prozesses?

Beitrag von GregorS » 17.07.2014 23:50:21

Moin allerseits!

Ein Programm (fbi, ein Bildanzeiger für ein Framebuffer-Display), das ich aus einem Skript heraus starte, beendet sich nicht automatisch, sondern läuft im Hintergrund weiter. Wenn ich ein anderes Bild anzeigen möchte, muss ich fbi erneut starten. Dann taucht fbi bei 'pidof' mit zwei PIDs auf.

Wenn ich da nie etwas kille, läuft irgendwann der ganze Rechner nur noch für ein paar tausend Inkarnationen eines Bildbetrachters. Wie finde ich am einfachsten heraus, welche(n) der laufenden Bildbetrachter ich abschießen darf bzw. welcher nicht abgeschossen werden darf?

Mir fallen zwar mögliche Lösungen ein, aber die muten teilweise seltsam an. Gibt es eine fertige Lösung für so einen Fall?

Vielen Dank vorweg!

Gregor
Zuletzt geändert von GregorS am 18.07.2014 00:36:08, insgesamt 1-mal geändert.
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: PID des am längsten laufenden Prozesses?

Beitrag von cronoik » 18.07.2014 00:07:06

Hi,

verstehe ich das richtig: du öffnest fbi über ein Skript und ab und an startest du das Skript erneut um ein anderes Bild anzuzeigen?
Wenn ja könntest du doch am Anfang deines Skriptes fbi killen bevor das neue geöffnet wird?
Hilf mit unser Wiki zu verbessern!

Benutzeravatar
GregorS
Beiträge: 2596
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: PID des am längsten laufenden Prozesses?

Beitrag von GregorS » 18.07.2014 00:23:31

cronoik hat geschrieben:verstehe ich das richtig: du öffnest fbi über ein Skript und ab und an startest du das Skript erneut um ein anderes Bild anzuzeigen?
Wenn ja könntest du doch am Anfang deines Skriptes fbi killen bevor das neue geöffnet wird?
Ja, das geht schon, aber zwischen Killen und Neustart flackert das Display, was stört. Deshalb möchte ich das Programm zuerst neu starten und dann die ältere der beiden dann laufenden Instanzen killen.

Deine Frage hat mich allerdings auf eine Idee gebracht, die das Problem löst (und die so einfach ist, dass ich mich nicht traue, sie hier zu veröffentlichen :-)

Gruß

Gregor

PS: Eis für alle!
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: PID des am längsten laufenden Prozesses?

Beitrag von cronoik » 18.07.2014 00:32:08

Am Anfang pid auslesen, fbi starten, fbi anhand ausgelesener pid killen.
Einmal Vanille bitte.

Edit: ich hatte inzwischen überlegt über

Code: Alles auswählen

top -b -n 1 |  grep "fbi" |...
zugehen. Hat hier vielleicht jemand eine Idee wie man hätte weitergehen können?
Zuletzt geändert von cronoik am 18.07.2014 00:36:20, insgesamt 1-mal geändert.
Hilf mit unser Wiki zu verbessern!

Benutzeravatar
GregorS
Beiträge: 2596
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: PID des am längsten laufenden Prozesses?

Beitrag von GregorS » 18.07.2014 00:35:38

cronoik hat geschrieben:Am Anfang pid auslesen fbi starten fbi anhand ausgelesener pid killen.
Ich sag‘ ja, dass es peinlich simpel ist.

Noch mehr Eis für alle!

Gregor

PS: Man sollte genau dann mit dem Eisessen aufhören können, wenn es einem gerade noch nicht schlecht davon wird. Das Leben ist hart.
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Benutzeravatar
GregorS
Beiträge: 2596
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: PID des am längsten laufenden Prozesses?

Beitrag von GregorS » 18.07.2014 00:50:24

cronoik hat geschrieben:ich hatte inzwischen überlegt über

Code: Alles auswählen

top -b -n 1 |  grep "fbi" |...
zugehen. Hat hier vielleicht jemand eine Idee wie man hätte weitergehen können?
Deshalb bin ich für Eis :-) Bei dieser Hitze heute verheddert man sich nur in den Knoten, die man lösen will.

Mein Vorschlag:
#!/bin/bash

PID=`pidof eog`

if [ -n "$PID" ]; then
echo "PID ist $PID"
fbi ...
kill $PID
else
echo "nichts gefunden"
fbi ...
fi

# eof
Den Test kann man bestimmt hübscher formulieren, aber es funktioniert.

Am meisten Eis für mich!

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Antworten