Tun Sie etwas, wenn ein Programm läuft

Tun Sie etwas, wenn ein Programm läuft

Gibt es etwas, das man in das Terminal eingeben kann, sodass ein Befehl ausgeführt wird, wenn ein bestimmtes Programm läuft? Zum Beispiel if <Libre office is running> then sudo pkill <Libre ofice>.

Bearbeitung 1: Ich möchte also eine if-Anweisung im Terminal erstellen, die ausgeführt wird, wenn ein Programm läuft, und wenn nicht, passiert nichts oder etwas anderes.

Antwort1

„Ich möchte eine if-Anweisung im Terminal erstellen, die ausgeführt wird, wenn ein Programm läuft. Wenn nicht, passiert nichts oder etwas anderes.“

Um anhand des Namens zu ermitteln, ob ein Programm ausgeführt wird, verwenden Sie pgrep. So führen Sie etwas aus, wenn das Textverarbeitungsprogramm von LibreOffice ausgeführt wird:

pgrep soffice.bin >/dev/null && do_something

Ähnlich verhält es sich, wenn LibreOffices Textverarbeitungsprogrammnichtläuft:

pgrep soffice.bin >/dev/null || do_something

Darüber hinaus können Sie diese beiden in Kombination verwenden:

pgrep soffice.bin && do_one_thing || do_another

Oder, wenn es komplizierter wird, verwenden Sie eine ifAnweisung:

if pgrep soffice.bin
then
    # command is running
    do_one_thing
    do_one_thing2
else
    # command is not running
    do_another
    do_another2
fi

Das Obige funktioniert, weil pgrep, genau wie grep, einen nützlichen Exit-Code setzt. Wenn ein Prozess gefunden wird, wird er mit einem Exit-Code von Null zurückgegeben (was die Shell als logisch wahr interpretiert). Wenn nicht, wird er mit Eins zurückgegeben (die Shell interpretiert jeden Exit-Code ungleich Null als falsch).

Um alle aktuell laufenden Programme herauszufinden (und somit auch, welchen Namen Sie als Argument für verwenden müssen pgrep), führen Sie ausps ax

verwandte Informationen