Anwendung automatisch ablehnen, wenn sie von einem Terminal aus ausgeführt wird

Anwendung automatisch ablehnen, wenn sie von einem Terminal aus ausgeführt wird

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, firefoxwird 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_applicationvom 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, disownist 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 screenwenn 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.

verwandte Informationen