Considere o seguintenohup
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?
Responder1
nadanão desconecta um comando do terminal, faz com que seu script ignoreSIGHUP
e redireciona stdout/stderr
para um arquivo nohup.out
, para que o comando possa continuar sendo executado 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 uma extensão &
.
$ nohup ./script.sh &
[1] 3390
$ nohup: ignoring input and appending output to ‘nohup.out’
jobs
pode imprimir trabalhos atualmente em execução e seu status. Se o comando jobs
nã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, fg
mesmo 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 ainit
processo. Se você pesquisar, pstree
verá 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 tmux
ou screen
. Você pode encontrar algumas informações sobre como usá-los nos links abaixo:
tmux:
tela:
- Tela - Documentação da comunidade Ubuntu
- Tela GNU: uma introdução e tutorial para iniciantes
- atalhos de teclado na 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.