Effizientester Weg, ein Programm vom Terminal aus zu starten und zu trennen?

Effizientester Weg, ein Programm vom Terminal aus zu starten und zu trennen?

Ich versuche, ein Programm vom Terminal aus so zu starten, dass folgendes passiert:

  1. Das Schließen des Terminals schließt das Programm nicht
  2. Das Programm gibt beim Öffnen, Verwenden oder Schließen nichts an das Terminal aus
  3. Das Terminal kann für andere Zwecke genutzt werden
  4. Der Befehl ist kurz und bündig
  5. Es gibt keine Ausgabedatei, über die Sie sich Gedanken machen müssen

Antwort1

Sehen man nohup:

NAME
   nohup - run a command immune to hangups, with output to a non-tty

Antwort:

nohup program-name &

Antwort2

Ich denke, das wäre der umfassendste Weg:

program-name </dev/null &>/dev/null &
disown %%

Wenn Sie den im Hintergrund ausgeführten Prozess ablehnen, wird er von der Shell nicht mehr verfolgt. Sie werden nicht benachrichtigt, wenn er abgeschlossen ist. Sie werden auch nicht daran gehindert, Ihre Shell zu schließen. %%bedeutet „der zuletzt im Hintergrund ausgeführte Job“.

Wenn Sie alle Details verbergen möchten, fügen Sie eine Funktion wie diese in Ihre .bashrc ein

launch_and_forget () { "$@" </dev/null &>/dev/null & disown %%; }

Dann

launch_and_forget program args "args args" ...

Geben Sie einen Namen ein, der für Sie eine Bedeutung hat.

Antwort3

Sie können ganz einfachsetsid:-

NAME
       setsid - run a program in a new session

SYNOPSIS
       setsid program [arg...]

DESCRIPTION
       setsid runs a program in a new session.

Versuchen Sie den folgenden Befehl: -

setsid <command>

Beispiel: - setsid geditusw.setsid nautilus ~/Downloads/

Antwort4

Ich würde entweder empfehlentmux, alsSiyuan Renvorgeschlagen, oderGNU-Bildschirm. Auf diese Weise erhalten Sie ein neues Terminal für Ihren Befehl. Sie können es abnehmen und vergessen, aber Sie können es wieder verwenden, wenn Sie es sich anders überlegen.

verwandte Informationen