Wie verwerfen Sie automatisch die Zustimmung zu einer Anwendung, nachdem Sie diese von einem Terminal aus gestartet haben?
Beispiel: Wenn Sie ein Terminal starten und ausführen, firefox
wird die Anwendung gestartet, aber wenn Sie das Terminal dann schließen, wird auch Firefox geschlossen. Um zu vermeiden, dass Anwendungen, die von einem Terminal aus gestartet wurden, unbeabsichtigt geschlossen werden, können Sie sie zunächst mit dem ampersant: in den Hintergrund stellen, firefox &
wodurch auch die Möglichkeit wiederhergestellt wird, die Eingabeaufforderung dieses Terminals zu verwenden. Als Nächstes können Sie die Anwendung von demselben Terminal aus mit der Prozess-ID (PID) der Anwendung ablehnen, siehe dieses Beispiel unten:
$ firefox &
$ ps | grep firefox
14917 pts/6 00:00:00 firefox
$ disown 14917
Die Anwendung läuft jetzt unabhängig vom verwendeten Terminal und das Schließen des Terminals beendet die Anwendung nicht mehr.
Aber wie können Sie dies bei jedem Start einer Anwendung automatisch tun?
Antwort1
Der einfachste Weg ist die Ausführung:
daemon firefox
So können Sie das Terminal selbst weiter verwenden/schließen
Antwort2
EDIT: einbessere Antwortwurde von IV bereitgestellt.
Um dies automatisch zu tun, können Sie einen Bash-Alias verwenden. Wenn Sie die folgenden Zeilen zu Ihrer .bash_aliases-Datei in Ihrem Home-Verzeichnis hinzufügen, können Sie jede Anwendung my_application
vom Terminal aus starten, während Sie sie automatisch in den Hintergrund stellen und sie anschließend von diesem Terminal aus beenden, indem Sie den folgenden Befehl verwenden s my_application
:
# start programs from shell but immediately disown them
startAndDisown() {
$1 & disown $!
}
alias s=startAndDisown
Beachten Sie, dass $!
automatisch die PID des letzten asynchronen Jobs zurückgegeben wird.
Antwort3
firefox & disown $!
funktioniert bei mir nicht, aber eine ähnliche Lösung, die bei mir funktioniert, istfirefox&;disown
Eine andere Lösung, die dies nicht erfordert, disown
ist die Verwendung von GNU Screen. Ihre Terminalsitzung bleibt erhalten, selbst wenn Sie das Terminalfenster schließen. Die praktische Anwendbarkeit hängt jedoch davon ab, wie Sie Ihr Terminal verwenden. Wenn Sie nur ein Terminalfenster gleichzeitig verwenden, ist dies eine großartige Lösung. Wenn Sie mehrere Terminals verwenden, ist dies weniger der Fall. Installieren Sie Screen mit Ihrem bevorzugten Paketmanager und tippen Sie dann jedes Mal ein, wenn Sie ein Terminal öffnen screen -r
(oder screen
wenn keine Screen-Sitzung ausgeführt wird). Sie müssen sich dann keine Gedanken über das Schließen Ihres Terminals machen. Dies ist eine sehr nischenhafte Lösung, aber sie könnte für Sie geeignet sein.