kill $( jobs -p )
enviaria o sinal TERM
para todos os jobs , independentemente de estarem ou não em execução. Um trabalho pode incluir vários processos, mas apenas o primeiro processo em cada trabalho seria sinalizado (veja mais abaixo).
Sua primeira e terceira e última pergunta têm a mesma resposta. Um trabalho parado não recebe nenhum sinal. Um manipulador de sinal (mesmo o padrão) é executado no processo e o processo é interrompido . Os sinais são entregues quando o trabalho é retomado.
Quanto à segunda questão, acredito que jobs -p
apenas forneça o ID do processo do primeiro processo, enquanto jobs -l
lista todos os processos pertencentes a todos os trabalhos. Matar o primeiro processo de um pipeline fecha o descritor de arquivo do qual o próximo processo está lendo, solicitando um fim de arquivo em sua próxima tentativa de leitura.