Traga o trabalho nohup para o primeiro plano

Traga o trabalho nohup para o primeiro plano

Considere o seguintenohupexecuçã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?

Responder1

nadanão desconecta um comando do terminal, faz com que seu script ignoreSIGHUPe redireciona stdout/stderrpara um arquivo nohup.out, para que o comando possa continuar sendo executado em segundo plano após o logout.

nohupnão coloca automaticamente o comando executado em segundo plano. É preciso fazer isso explicitamente, encerrando a linha de comando com uma extensão &.

$ nohup ./script.sh &
[1] 3390
$ nohup: ignoring input and appending output to ‘nohup.out’

jobspode imprimir trabalhos atualmente em execução e seu status. Se o comando jobsnão conseguir encontrá-lo, então não é mais umprocesso filhodessa casca.

$ jobs 
[1]+  Running                 nohup ./script.sh &

Pode-se trazer de volta um trabalho em segundo plano para o primeiro plano no bash, fgmesmo que seja executado com nohup. Mas isso não mudará oredirecionamento de saída, que ainda irá para o arquivonohup.out.

$ fg
nohup ./script.sh

Se você fechar o shell/terminal ou fazer logoff, seu comando não será mais filho desse shell. Isso pertence ainitprocesso. Se você pesquisar, pstreeverá que agora ele pertence ao processo 1 ( init). Isso não pode ser trazido de volta ao primeiro plano porque o primeiro plano não existe mais.

Responder2

Se você quiser iniciar um script, executá-lo sem que a saída incomode seu terminal e depois trazê-lo mais tarde para interagir com ele, você pode querer dar uma olhada em um multiplexador de terminal. Dependendo do seu sistema eu recomendaria tmuxou screen. Você pode encontrar algumas informações sobre como usá-los nos links abaixo:

tmux:

tela:

editar: links adicionados para primers tmux

Responder3

Vou apoiar o uso de um multiplexador de terminal, mastmux, não tela. A tela não é, para todos os efeitos, mantida. Sua configuração é uma arte sombria, provavelmente registrada pela primeira vez em um apêndice do Necronomicon. Tentar escrever sua própria configuração é como um vislumbre de Cthulu. Seriamente. Olhe ao redor para as pessoasArquivos .screenrc. Com certeza, existem maneiras de mediar a abominação de um arquivo de configuração na tela.Byobufaz um trabalho admirável como véu entre os usuários mortais e o código profano. Ele vem com cores sensíveis, uma interface de menu e, talvez o mais importante, uma barra de status.

Mas como eu disse, recomendotmuxem vez de. Ainda requer algumas configurações menores, mas ébem documentado, e seu arquivo de configuração não parecerá algo sem sentido. Além disso, você começa com cores e uma barra de status. Compare meus arquivos screenrc e tmux.conf:

Responder4

Qualquer comando do Linux pode ser enviado para segundo plano com ' &' anexado no final.

Para visualizar todos os jobs em background, você pode emitirjobs

jobs
[1]  + suspended  nohup sh zookeeper-server-start.sh ../config/zookeeper.properties
[2]    running    nohup sh kafka-server-start.sh ../config/server.properties
[3]  - running    nohup sudo mongod --dbpath=/var/lib/mongodb

Aqui estou executando 3 trabalhos 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 trazer essas tarefas para o primeiro plano usandofg %$taskNumber.

informação relacionada