Você terá que reescrever sua função para poder fazer isso.
Quando você inicia um trabalho em segundo plano com &
, o shell realmente acompanha isso e, na verdade, é possível descobrir mais informações usando o jobs
builtin. No entanto, essa informação é específica para essa instância do shell; se você executar sua função com &
, então um shell separado é gerado, que não é o shell com os jobs em segundo plano, e, portanto, não é possível acessar as informações sobre os jobs do shell original a partir desse shell separado.
No entanto, há uma maneira simples de corrigir isso:
- reescreva sua função para que ela seja executada em termos de IDs de processo (PIDs) em vez de números de trabalho. Ou seja, verifique se ainda existe um processo (por exemplo, analisando
ps
output, verificando se/proc/pid
existe) - execute sua nova função com
%2
em vez de2
como argumento. Ou seja, dê o sinal de porcentagem seguido pelo ID do trabalho que você deseja monitorar; o sinal de porcentagem é usado por shells Bourne para substituir um id de job pelo pid do job especificado.
Com isso, deve funcionar.