Considere a seguinte nohup
execução:
nohup script.sh > script.out &
Existe uma maneira de fazer logoff do terminal, reconectar, trazer o processo de volta ao primeiro plano e interagir com ele usando o teclado?
command-line
process
background
nohup
Adam Matan
fonte
fonte
nohup não desconecta um comando do terminal, faz com que seu script seja ignorado
SIGHUP
e redirecionadostdout/stderr
para um arquivonohup.out
, para que o comando possa continuar em execução em segundo plano após o logout.nohup
não coloca automaticamente o comando executado em segundo plano. É preciso fazer isso explicitamente, encerrando a linha de comando com um&
.jobs
pode imprimir trabalhos atualmente em execução e seu status. Se o comandojobs
não puder encontrá-lo, não será mais um processo filho desse shell.Pode-se trazer de volta um trabalho em segundo plano para o primeiro plano no bash,
fg
mesmo que seja executado com elenohup
. Mas isso não mudará o redirecionamento de saída, que ainda estará indo para o arquivonohup.out
.Se você fechar o shell / terminal ou efetuar logoff, seu comando não será mais filho desse shell. Pertence ao
init
processo. Se você pesquisar,pstree
verá que agora pertence ao processo 1 (init
). Isso não pode ser trazido de volta ao primeiro plano porque o primeiro plano não existe mais.fonte
If the command jobs cannot find it, then it is no longer a child process of that shell.
Isso é errado: tente esta sequência para ver como:sleep 100 & disown ; echo Jobs:; jobs; echo Tree:; pstree -ap $$
. Após esse comando, você ainda verá osleep
trabalho com o mesmo PID impresso quando o gerou, enquantojobs
não imprimirá nada. A única maneira pela qual um processo filho pode deixar de ser filho é perder o pai (então o órfão se torna filho deinit
) ou bifurcar + sair (mas o PID muda, então não é o filho original).Vou testar o uso de um multiplexador de terminal, mas o tmux , não a tela. A tela é, para todos os efeitos, sem manutenção. Sua configuração é uma arte sombria, provavelmente registrada pela primeira vez em um apêndice do Necronomicon. Tentar escrever sua própria configuração é um vislumbre de Cthulu. Seriamente. Veja os arquivos .screenrc das pessoas . Para ter certeza, existem maneiras de mediar a abominação da tela de um arquivo de configuração. Byobu faz um trabalho admirável como o véu entre usuários mortais e códigos profanos. Ele vem com cores sensíveis, uma interface de menu e, talvez o mais importante, uma barra de status.
Mas como eu disse, eu recomendo o tmux . Ele ainda requer algumas configurações menores, mas está bem documentado , e seu arquivo de configuração não parecerá sem sentido. Além disso, você começa com cores e uma barra de status. Compare meus arquivos screenrc e tmux.conf:
fonte
Se você está apenas interessado em olhar ao vivo, a saída pode ser adequada para você:
fonte
Qualquer comando do Linux pode ser enviado para segundo plano com '
&
' anexado no final.Para visualizar todos os trabalhos em segundo plano, você pode emitir
jobs
Aqui estou executando três tarefas em segundo plano: zookeeper, kafka e mongo daemon. [1], [2] e [3] são os respectivos números de trabalho para essas tarefas.
Você pode colocar essas tarefas em primeiro plano usando
fg %$taskNumber.
fonte