Ich habe ein sehr einfaches (aber für mich nützliches) Bash-Skript erstellt. Es werden lediglich einige Anwendungen geöffnet, die ich manuell geöffnet habe. Hier ist der Code:
#!/bin/bash
netbeans &
mysql-workbench &
opera &
chromium-browser &
Wenn ich jetzt das Terminal schließe, werden die vom Skript geöffneten Anwendungen weiter ausgeführt. Was normal ist, dafür ist das "&" da.
Meine Frage ist: Gibt es eine Möglichkeit, diese Anwendungen weiterhin automatisch auszuführen, aber auch automatisch zu schließen? Wenn sie noch an das Terminal angeschlossen wären, würden sie geschlossen, aber wenn ich das kaufmännische Und entferne, wird nur die erste Anwendung ausgeführt.
Vielen Dank
command-line
bash
process
Karim Mtl
quelle
quelle
&
nach einem GUI-Programm wird das GUI-Programm gestartet, aber das Schließen des Terminals wird das GUI-Programm nicht schließen.&
. Die Verwendung&
hat keinen Einfluss darauf, ob die Anwendungen beim Schließen des Terminals beendet werden oder nicht. Durch das Schließen des Terminals erhält die Anwendung SIGHUP. Wenn die Anwendung nicht beendet wird, liegt dies daran, dass dieses Signal absichtlich ignoriert wird. Nicht weil du es benutzt hast&
.Antworten:
Diese beiden Funktionen können aus Ihrer
.bashrc
Datei verwendet werden, um sie zu starten und zu schließen. Rufen Sie sie einfach mitlapp
und aufkapp
:Information:
source .bashrc
nach dem Hinzufügen dieser Funktionen auszuführen(Quelle:
man pkill
)quelle
Sie müssen das Skript als Quelle verwenden, damit diese Befehle in Ihrer aktuellen Shell ausgeführt werden, anstatt in der abgespaltenen Shell, die für das Skript gestartet wurde:
Diese Hintergrundprozesse sind dann Teil der Jobsteuerung Ihrer Shell.
Es ist möglicherweise einfacher, eine Funktion zu verwenden. Fügen Sie in Ihrem Bashrc beispielsweise Folgendes hinzu:
Wenn Sie dann
foo
von bash ausgeführt werden, werden die Befehle in Ihrer aktuellen Shell ausgeführt.quelle