Abfrage auf /proc/PID sinnvoll? (ps Ersatz)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
MartinV
Beiträge: 558
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Abfrage auf /proc/PID sinnvoll? (ps Ersatz)

Beitrag von MartinV » 17.05.2018 09:30:58

Ich habe viele Abfragen auf laufende Prozesse in der Art:

Code: Alles auswählen

ps -p PID >/dev/null && aktion
Ich überlege, das zu ersetzen durch:

Code: Alles auswählen

[ -e /proc/PID ] && aktion
Als Vorteil sehe ich, daß ich keine externen Programme (hier ps) aufrufe, sondern nur ein bash-builtin. Das benötigt weniger Ressourccen und gibt weniger Prozeßlisteneinträge.

Spricht etwas dagegen? Ist die Abfrage auf /proc/PID immer zuverlässig?
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: Abfrage auf /proc/PID sinnvoll? (ps Ersatz)

Beitrag von breakthewall » 17.05.2018 15:34:16

Kann zwar grundsätzlich verstehen wenn man solche Abhängigkeiten reduzieren will, doch ich finde Du sparst hier am falschen Ende. Denn ps ist so schnell und effizient, dass das prinzipiell gar keine Belastung darstellt. Und letztlich ist ps auch nur ein Snapshot-Tool für laufende Prozesse, dass seine Informationen ebenso aus /proc bezieht, nur eben erheblich schneller und effizienter. Anhand von eigenen Erfahrungen, kann man wirklich viele kleine Programme mit Bash eigenen Konstrukten ersetzen, und das sogar ohne erhebliche Verluste bei der Geschwindigkeit. Nur solche Geschichten wie ps, pgrep und dergleichen, können je nach Aufgabe nur sehr aufwändig mit der Bash nachgebildet werden. Hinsichtlich der PID musst auch bedenken, dass sich diese stetig ändern kann, und abseits von "$!" oder der Job-Control nach einem durch die Bash gestarteten Programm, keine einfache Möglichkeit hast um PIDs laufender Programme zu ermitteln.

Benutzeravatar
MartinV
Beiträge: 558
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: Abfrage auf /proc/PID sinnvoll? (ps Ersatz)

Beitrag von MartinV » 17.05.2018 17:37:53

breakthewall hat geschrieben: ↑ zum Beitrag ↑
17.05.2018 15:34:16
Nur solche Geschichten wie ps, pgrep und dergleichen, können je nach Aufgabe nur sehr aufwändig mit der Bash nachgebildet werden
Hier geht es ja nur um die Abfrage, ob der Prozeß noch läuft. Die übrigen Infos von ps brauche ich nicht.
breakthewall hat geschrieben: ↑ zum Beitrag ↑
17.05.2018 15:34:16
Hinsichtlich der PID musst auch bedenken, dass sich diese stetig ändern kann,
Das ist für mich manchmal tatsächlich ein Problem. Manche Programme wie z.B. gnome-terminal forken sich selbst und ändern dadurch ihre PID. "$!" hilft mir da nicht weiter. Nach "gnome-terminal &" zeigt auch "jobs" in bash keine jobs an. Für mich bzw. meine Abfrage sieht das so aus, als habe sich das Programm beendet.
Gibt es dafür andere Möglichkeiten?
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Benutzeravatar
TRex
Moderator
Beiträge: 6053
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Abfrage auf /proc/PID sinnvoll? (ps Ersatz)

Beitrag von TRex » 17.05.2018 19:16:29

pgrep, was dir mit -f auch auf die vollständige cmdline filtern lässt. Hilft natürlich nur, wenn deine cmdline hinreichend eindeutig ist.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!

Antworten