Como trazer um trabalho para o primeiro plano e permitir a entrada do usuário do terminal

1

Semelhante a esta pergunta mas diferente de uma maneira importante: preciso iniciar vários trabalhos de um script e executá-los em segundo plano. Então, para gerenciá-los ou verificar seu progresso, preciso trazê-los para o primeiro plano e permitir a entrada do usuário.

O que estou fazendo atualmente é:

  1. Inicie um grupo de tarefas em um loop, por exemplo

    for ip in $(cat ip-list.txt); do run-job.sh $ip &; done
    
  2. Traga um trabalho individual para o primeiro plano com, por exemplo,

    fg 1 
    

Isso traz um trabalho para o primeiro plano, no entanto, existem dois problemas: Eu não pode fornecer a entrada do usuário - o processo não responde, como se o processo de receber o meu de entrada é o script que lançou o trabalho, e não o trabalho em si; também a variável $ ip é exibida não avaliada, ou seja, exatamente como "$ ip" em vez de "192.168.1.34". No entanto, quando eu digito 'empregos' Vejo todos os 10 trabalhos listados separadamente (mas todos eles parecem exatamente o mesmo: "run-job.sh $ ip" Eu tenho que usar ps para ver qual trabalho está usando qual valor ip.).

O comportamento que eu gostaria é o mesmo que o que eu ganho se começou todos esses postos de trabalho, digitando-os em individualmente, em seguida, bater control-z para colocá-los em segundo plano. Se eu fizer desse jeito, quando eu levá-los para o primeiro plano com fg, permitem a entrada do usuário diretamente para o processo, e também a variável $ IP é exibido avaliado para "192.168.1.34". No entanto, digitar manualmente os trabalhos não é viável para dezenas ou dezenas de trabalhos.

    
por 6bajillion 14.04.2018 / 15:47

0 respostas