A maneira mais eficiente de iniciar e separar um programa do terminal?

A maneira mais eficiente de iniciar e separar um programa do terminal?

Estou tentando iniciar um programa do Terminal de forma que ocorra o seguinte:

  1. Fechar o Terminal não fecha o programa
  2. O programa não está enviando nada para o Terminal ao abrir, usar ou fechar
  3. O Terminal é gratuito para ser usado para outras coisas
  4. O comando é curto e gentil
  5. Não há nenhum arquivo de saída com que se preocupar

Responder1

Ver man nohup:

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

Responder:

nohup program-name &

Responder2

Acho que esta seria a forma mais completa:

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

Rejeitar o processo em segundo plano significa que o shell não o rastreará mais. Ele não dirá quando estiver pronto. Isso não impedirá que você feche seu shell. %%significa "o trabalho com experiência mais recente".

Se você quiser ocultar todos os detalhes, coloque uma função como esta no seu .bashrc

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

Então

launch_and_forget program args "args args" ...

Dê um nome que seja significativo para você.

Responder3

Você pode simplesmente usarsetsid:-

NAME
       setsid - run a program in a new session

SYNOPSIS
       setsid program [arg...]

DESCRIPTION
       setsid runs a program in a new session.

Tente o seguinte comando: –

setsid <command>

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

Responder4

Eu recomendaria tambémtmux, comoSi Yuan Rensugerido, ouTela GNU. Dessa forma, você obtém um novo terminal para o seu comando. Você pode separá-lo e esquecê-lo, mas poderá voltar se mudar de ideia.

informação relacionada