Eu tenho dois scripts de shell, digamos client.sh
e server.sh
, que precisam funcionar simultaneamente e fornecer alguma saída útil watch
.
E posso usar apenas um terminal. Então devo alternar entre eles para ver o que está acontecendo, mas sem pará-los ( Ctrl+ Z).
Não consigo descobrir como fazer isso.
Quando eu corro
./server.sh &
então digite Enterterminal (antes de iniciar ocliente.sh), mas mostra
[1]+ Stopped ./server.sh
Existe uma maneira prática de alternar entre trabalhos no terminal para ver sua saída (estado interno) sem interrompê-los?
Responder1
Usar screen
:
$ screen -S my-job
Isso iniciará uma nova screen
sessão chamada "my-job" e conectará a ela.
$ ./server.sh
Isso iniciará seu server.sh
script no primeiro terminal (padrão) anexado à screen
Sessão. Agora pressione Ctrl- Aseguido de Ctrl- C. Isso vaiCCrie um novo terminal e mude para ele. Agora você pode executar:
$ ./client.sh
e observe sua saída. Para alternar, pressione Ctrl- Aseguido de Ctrl- Anovamente.
Para desconectar screen
enquanto ainda deixa seus programas em execução, pressione Ctrl- Aseguido de dparaDetach. Para reconectar e visualizar sua saída novamente, use:
$ screen -x my-job
Você também pode visualizar a saída de ambos os scripts de uma vez, enquanto anexados, fazendo o seguinte:
- Pressione Ctrl- Aseguido de sparaSdivida sua visão.
- Pressione Ctrl- Aseguido de Tabpara descer para a divisão inferior
- Ctrl- Aseguido por "para abrir uma lista de terminais ativos e selecione o 1º terminal (o 0º está conectado à divisão superior por padrão).
Responder2
O que você está procurando é o controle de trabalho do Bash. Você pode ler tudo sobre isso man bash
e pesquisar por 'JOB CONTROL' (digite /^JOB CONTROL
na página de manual do bash).
No entanto, command &
o comando ainda deve estar sendo executado em segundo plano. Você pode verificar isso com o jobs
comando bash. Isso listará todos os trabalhos em segundo plano, seu número e status do trabalho.
Com bg n
ou %n &
você pode retomar um trabalho interrompido com número de trabalho n (por exemplo, bg 5 para retomar o trabalho nº 5).
Com fg n
ou %n
você pode colocar um trabalho do plano de fundo de volta ao primeiro plano.
Espero que isto ajude.
Responder3
Use algo como screen(1) ou tmux(1) para executar o equivalente a vários terminais ao mesmo tempo. Você pode até sair e retomá-los de outro lugar.
Use guias, por exemplo, no Terminal Gnome.
Use o controle de trabalho no bash(1) (certifique-se de ler as partes relevantes do arquivo de informações) para interromper trabalhos/em segundo plano/primeiro plano.