
Estou tentando iniciar um programa do Terminal de forma que ocorra o seguinte:
- Fechar o Terminal não fecha o programa
- O programa não está enviando nada para o Terminal ao abrir, usar ou fechar
- O Terminal é gratuito para ser usado para outras coisas
- O comando é curto e gentil
- 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.