Wie kann ich prüfen, ob ein BESTIMMTER Screen Prozess läuft (Name) und dann ausgeben Ja/Nein?

2 Antworten

Irgendetwas in der Art sollte funktionieren:

NAME="DEIN_SCREEN_NAME"

if [[ -z `screen -ls | grep -P "\.${NAME}\t"` ]];
then
    echo "nein";
else
    echo "ja";
fi

Erklärung

screen -ls

zeigt dir alle laufenden screen sessions an.

 grep -P "\.${NAME}\t"

übernimmt die ausgabe von screen und filtert.

Das -P braucht man, um \t als Tab zu erkennen. 

Da screen -ls Ausgabe der Form:

2582.NAME    (Attached)

Produziert, sucht grep nach genau dem. einen Punkt, deinen Screen-Namen und danach ein Tab.

Die

``

sorgen dafür, dass das Ergebnis von screen und grep nicht angezeigt wird, sondern für bash verfügbar ist.

Und dann nur noch ein if herum:

if [[ -z IRGENDEIN_TEXT ]];
then
# macht etwas, wenn IRGENDEIN_TEXT Länge 0 hat
else
# macht etwas, wenn IRGENDEIN_TEXT nicht Länge 0 hat
fi

Gruß

Tuxgamer

Du kannst das Linux auch fragen:

CTRL+Alt+T (Terminal öffnen wenn es geht)

ps -A | grep PROZESSNAME

z.B. suchen wir python3 hier kann man auch mysqld oder my (er zeigt dann auch alle Prozesse mit den Anfangsbuchstaben 'my' an)

ps -A | grep python3

1018 ? 00:05:46 python3