web-dev-qa-db-fra.com

Le moyen le plus efficace de lancer et de séparer un programme du terminal?

J'essaie de lancer un programme depuis le terminal de telle sorte que les événements suivants se produisent:

  1. La fermeture du terminal ne ferme pas le programme
  2. Le programme n’émet aucune information au terminal lors de l’ouverture, de l’utilisation ou de la fermeture
  3. Le terminal est libre d’être utilisé pour autre chose
  4. La commande est courte et douce
  5. Il n'y a pas de fichier de sortie à s'inquiéter
14
Evan

Voir man Nohup:

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

Répondre:

Nohup program-name &
15
waltinator

Je pense que ce serait le moyen le plus complet:

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

Désavouer le processus en arrière-plan signifie que le shell ne le suivra plus. Il ne vous dira pas quand c'est fait. Cela ne vous empêchera pas de fermer votre Shell. %% signifie "le dernier travail en arrière-plan".

Si vous voulez masquer tous les détails, mettez une fonction comme celle-ci dans votre .bashrc

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

Ensuite

launch_and_forget program args "args args" ...

Donnez un nom qui a du sens pour vous.

8
glenn jackman

Vous pouvez très simplement utiliser setsid: -

NAME
       setsid - run a program in a new session

SYNOPSIS
       setsid program [arg...]

DESCRIPTION
       setsid runs a program in a new session.

Essayez la commande suivante: -

setsid <command>

Exemple: - setsid gedit, setsid nautilus ~/Downloads/ etc.

6
Pandya

Utilisez tmux.

Lancez d'abord tmux, puis lancez la commande de votre choix. Vous pouvez fermer la fenêtre tmux ou revenir en arrière par le raccourci CTRL-B D. En fait, vous pouvez même rattacher plus tard par tmux attach.

2
Siyuan Ren

Je recommanderais soit tmux , comme Siyuan Ren suggéré, ou écran GN . De cette façon, vous obtenez un nouveau terminal pour votre commande. Vous pouvez le détacher et l'oublier, mais vous pouvez revenir si vous changez d'avis.

1
Serpens

J'ai ramassé, et continue à utiliser ...

(Nohup program-name 2>/dev/null &)
0
Tony Martin