Linux

Comando Bash Wait

Comando Bash Wait

esperar é um comando que espera que as tarefas fornecidas sejam concluídas e retorna o status de saída do comando esperado.

Desde o esperar comando afeta o ambiente de execução do shell atual, ele é implementado como um comando embutido na maioria dos shells.

Neste artigo, vamos explorar o Bash integrado esperar comando.

Bash esperar Comando #

A sintaxe geral do esperar integrado tem o seguinte formato:

aguarde [opções] ID 

EU IA é o processo ou ID do trabalho. Se não EU IA for especificado, o comando espera até que todos os trabalhos filhos em segundo plano sejam concluídos.

O esperar comando retorna o status de saída do último comando esperado.

Por exemplo, para esperar por um processo em segundo plano com PID 7654, você usaria:

espere 7654

Quando vários processos são fornecidos, o comando espera que todos os processos sejam concluídos.

Os trabalhos são especificados usando a especificação do trabalho (“jobspec”), que é uma forma de se referir aos processos que compõem o trabalho. Um jobpec começa com um símbolo de porcentagem seguido pelo número do trabalho (% n). Aqui está um exemplo:

Execute um comando em segundo plano:

rsync -a / home / tmp / home &

O ID do trabalho shell (entre colchetes) e o ID do processo serão exibidos em seu terminal:

[2] 54377 

Para esperar pelo trabalho, execute o esperar comando seguido da especificação do trabalho:

espere% 2

Quando invocado com o -n opção, o comando espera apenas por um único trabalho dos pids ou jobspecs fornecidos para ser concluído e retorna seu status de saída. Se nenhum argumento for fornecido, espere -n aguarda a conclusão de qualquer trabalho em segundo plano e retorna o status de saída do trabalho.

esperar -n 45432 54346 76573

No exemplo acima, espere -n imprime apenas o status de retorno do trabalho que sai primeiro; não mostra o PID do trabalho. Se você deseja obter o trabalho pid ou jobspec para o qual o status de saída é retornado, use o -p opção de atribuí-lo a uma variável:

wait -p job_id -n 45432 54346 76573

-p opção foi introduzida no Bash 5.1. Se você usar uma versão mais antiga do Bash, receberá um erro de “opção inválida”.

O -f opção diz esperar esperar que cada pid ou jobpec termine antes de retornar seu código de saída, em vez de retornar quando o status do trabalho for alterado. Esta opção só é válida quando o controle de trabalho está habilitado. Por padrão, o controle de tarefas é habilitado apenas para prompts interativos.

Exemplos #

esperar é normalmente usado em scripts de shell que geram processos filhos que são executados em paralelo.

Para ilustrar como o comando funciona, crie o seguinte script:

#!/ bin / bash sleep 30 & process_id = $! echo "PID: $ process_id" wait $ process_id echo "Status de saída: $?" 

Vamos explicar o código linha por linha:

  1. A primeira linha é chamada shebang e diz ao sistema operacional qual interpretador usar para analisar o resto do arquivo.
  2. Estamos usando o dormir comando para emular um processo demorado em segundo plano.
  3. $! é uma variável Bash interna que armazena o PID do último trabalho executado em segundo plano. Neste exemplo, esse é o PID do dormir comando. Estamos armazenando o PID em uma variável (process_id).
  4. Imprime o número PID.
  5. O PID é passado para o esperar comando que espera até o dormir comando completo.
  6. Imprime o status de saída do esperar comando. $? é uma variável Bash interna que contém o status de saída do último comando executado.

Se você executar o script, ele imprimirá algo assim:

PID: 36353 Status de saída: 0 

Aqui está um exemplo usando o -n opção:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "Primeiro trabalho concluído."wait echo" Todos os trabalhos concluídos." 

Quando o script é executado, ele gera 3 processos em segundo plano. espere -n espera até que o primeiro trabalho seja concluído e a declaração de eco seja impressa. esperar aguarda a conclusão de todos os trabalhos de segundo plano filho.

primeiro trabalho concluído todos os trabalhos concluídos 

O último exemplo explica o -f opção. Abra o terminal e execute:

dormir 3600 e
[1] 46671 

Aguarde o processo:

espere 46671

Abra outro terminal e pare o processo com o mate comando:

kill -STOP 46671

Uma vez que o status do processo é alterado, o esperar o comando será concluído e retornará o código de saída do processo.

Agora, repita os mesmos passos, mas desta vez use espere -f $ pid:

dormir 3600 eesperar -f 46671

Pare o processo do outro terminal:

kill -STOP 46671

Desta vez o esperar o comando não vai completar. Será executado até o dormir processo termina.

Conclusão #

O esperar comando espera que os trabalhos especificados sejam concluídos e retorna o código de saída do trabalho.

Se você tiver alguma dúvida ou feedback, fique à vontade para deixar um comentário.

Remapeie os botões do mouse de maneira diferente para software diferente com o controle de botão do mouse X
Talvez você precise de uma ferramenta que possa fazer o controle do seu mouse mudar com cada aplicativo que você usa. Se for esse o caso, você pode ex...
Análise do mouse sem fio Microsoft Sculpt Touch
Recentemente li sobre o Microsoft Sculpt Touch mouse sem fio e decidi comprá-lo. Depois de usá-lo por um tempo, decidi compartilhar minha experiência ...
AppyMouse na tela Trackpad e ponteiro do mouse para tablets Windows
Os usuários de tablets costumam perder o ponteiro do mouse, especialmente quando costumam usar laptops. Os smartphones e tablets touchscreen vêm com m...