Como usar um terminal com vários trabalhos interativos sem interrompê-los?

Como usar um terminal com vários trabalhos interativos sem interrompê-los?

Eu tenho dois scripts de shell, digamos client.she 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 screensessão chamada "my-job" e conectará a ela.

$ ./server.sh

Isso iniciará seu server.shscript no primeiro terminal (padrão) anexado à screenSessã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 screenenquanto 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 bashe pesquisar por 'JOB CONTROL' (digite /^JOB CONTROLna 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 jobscomando bash. Isso listará todos os trabalhos em segundo plano, seu número e status do trabalho.

Com bg nou %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 nou %nvocê 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.

informação relacionada