Trabalhos que não aparecem em 'jobs'

2

Eu tenho um script chamado go.sh

python3 bob.py &> lol.log & 
python3 alice.py &> lol2.log &

Quando executo ./go.sh e, em seguida, executo jobs . Nenhum dos trabalhos que eu executei em go.sh aparece em jobs . De fato, nada aparece em jobs .

No entanto, quando executo cada comando em go.sh em um, ele aparece em jobs .

Como posso corrigir isso?

    
por dksadmsaklaslksald 18.06.2018 / 01:19

2 respostas

2

Suponho que você execute go.sh & não apenas go.sh e, em seguida, jobs , pois isso é trivial (não se espera que nenhum trabalho seja relatado quando terminar).

Seu script inicia dois trabalhos em segundo plano e pronto. Então você não vê isso. Você não vê também os trabalhos iniciados pelo script como se fosse outro shell. Se você quiser ver os trabalhos, em vez de executar o script, forneça-o.

. go.sh; jobs

Agora você deve ver os dois trabalhos listados.

Se você preferir executar o script e ainda vê-lo como um trabalho, peça para esperar até que seus filhos terminem. Adicione wait antes do seu final. Você também pode chamar jobs de dentro do script.

    
por 18.06.2018 / 01:35
2

Um trabalho só aparecerá em "jobs" se for um filho imediato do shell em que você está digitando. O script é executado em um subshell, em um novo processo e, portanto, não é filho do shell de login e não é visível para o shell de login.

    
por 18.06.2018 / 01:32

Tags