
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 if
Anweisung:
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