Titel: Programm-PID finden
Beitrag von: Andreas am 28. November 2022, 07:50:44
Manchmal steht man vor dem Problem die PID eines laufenden Prozesses in einem Script zu ermitteln. das geht wunderbar mit ps und grep - etwa so: Code:
Ich gebe mal ein komplettes Beispiel. Ich möchte wissen ob der cron-Prozess "regler-auslesen.php" noch läuft. Das geht so: Code:
ps ax | grep regler_auslesen.php 3812125 ? Ss 0:00 /bin/sh -c /var/www/html/regler_auslesen.php >/dev/null 3812357 pts/3 S+ 0:00 grep regler_auslesen.php |
| Schon mal nicht schlecht - aber der grep-Prozess, der ja zum Zeitpunkt der Suche selbst gerade läuft findet auch stets sich selbst. Man bekommt also immer ZWEI Prozesse angezeigt: den, den man sucht und den Prozess der gerade danach sucht. Auf der Kommandozeile kein Problem - in einem Script schon. Da brauche ich exakt EINE PID. Das kann man ganz einfach lösen: die Suchzeichenkette von grep kennt regex. Also suche ich einfach wie folgt: Code:
ps ax | grep [r]egler_auslesen.php 3934227 ? Ss 0:00 /bin/sh -c /var/www/html/regler_auslesen.php >/dev/null |
| und schwupps! finde ich nur den Prozess nach dem ich suche. Warum? Beschäftigt euch mal mit "regex" (reguläre Ausdrücke). Ist nicht wirklich einfach - aber seeeeeehr mächtig 8)
LG Andreas |
Titel: Re:Programm-PID finden
Beitrag von: Sebastian am 28. November 2022, 17:07:46
Und falls man nur die PID benötigt für sein Script bekommt man so nur die PID ausgeben ohne den Rest der Befehlszeile:
Code:
pgrep -f regler_auslesen.php
|
|
pgrep ist im Paket procps-ng das eine Abhängigkeit von base ist, und somit auf jeden Arch vorhanden sein müsste.
Regex ist sehr mächtig, und das Mittel der Wahl, wenn man Zeichenketten präzise suchen möchte.
Für das Studium von Regex kann ich das Buch Einstieg in reguläre Ausdrücke (https://amzn.eu/aqqATST) empfehlen.
Und zum Üben Ausprobieren: https://regex101.com/
Und hier ist eine Seite, die reguläre Ausdrücke als SVG oder PNG darstellt. https://regexper.com/ |
Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.
|