Suponha que gedit
o programa que você deseja executar seja desanexado (também conhecido como "deserdado", "desemaranhado", "desacoplado"). Existem diferentes maneiras, dependendo do que você deseja fazer exatamente:
Programa já em execução
Disown:
disown -h
é o caminho a percorrer se você quiser fazer isso com um programa já em execução (ou seja, se você se esqueceu nohup
). Você primeiro precisa parar usando Ctrl+ Z. Então você pode colocar em segundo plano usando bg [jobId]
(por exemplo bg 1
). Você obtém uma lista dos trabalhos em execução com o jobId usando jobs
. Depois disso, você pode separá-lo do terminal usando disown -h %[jobId]
. Exemplo de sessão de terminal:
$ gedit
^Z
[1]+ Stopped gedit
$ jobs
[1]+ Stopped gedit
$ bg 1
[1]+ gedit &
$ disown -h %1
$ exit
Programa ainda não iniciado
nohup
nohup
nem sempre está presente em todas as máquinas. Se você sabe que deseja desacoplar antes, usaria:
nohup gedit &
Talvez você vai querer redirecionar a saída shell bem e seu programa de uma fonte de entrada pseudo, então: nohup ./myprogram > foo.out 2> bar.err < /dev/null &
. Você deseja redirecionar a saída para não se incomodar com ela ou usá-la mais tarde. A entrada nula pode ajudar a evitar hickups no ssh.
Subshell:
Você pode obter um efeito semelhante ao
$ (geany >/dev/null 2>&1 &)
Os colchetes abrem um novo subshell para executar o gedit. O >/dev/null 2>&1
redireciona a saída do shell para lugar nenhum (suprimindo a saída). E &
no final coloca o processo em segundo plano.
Multiplexação de terminais
Também multiplexação de terminal usando tela ou byobu . Basicamente, você executa o programa em um terminal próprio. Eu realmente recomendo o byobu por outras razões também. Abaixo está uma lista de atalhos de boybu que podem ser úteis para seus primeiros passos:
Útil:
- F2 Crie uma nova janela
- F3 Mover para a próxima janela
- F4 Mover para a janela anterior
- F6 Desconecte-se da sessão e saia
- Shift-F6 Desconecte da sessão, mas não saia
- F7 Entre no modo de rolagem / pesquisa
- Ctrl-F5 Reconecte todos os soquetes ou agentes SSH / GPG
Menos útil:
- Shift-F2 Dividir a tela horizontalmente
- Ctrl-F2 Dividir a tela verticalmente
- Shift-F3 Mover o foco para a próxima divisão
- Shift-F4 Mover o foco para a divisão anterior
- Shift-F5 Recolher todas as divisões
- F5 Atualizar todas as notificações de status
- F8 Renomeie a janela atual
- F9 Inicie o menu de configuração do Byobu
- F12 Chave de escape da tela GNU
- Alt-Pageup Role para trás através do histórico desta janela
- Alt-Pagedown Role para a frente no histórico desta janela
- Ctrl-a-! Ativar ou desativar todas as combinações de teclas de Byobu
O daemon 'at' e outros
at
é uma pequena ferramenta útil para executar um comando em um horário agendado. Pode ser 'mal utilizado' para desanexar um comando do shell:
echo './myprogram myoption1 myoption2' | at now
Além disso, você pode analisar setsid
e start-stop-daemon
, mas os outros métodos devem ser suficientes.