Temos um comando de espera do Linux para esperar que um ou mais de um processo seja concluído no sistema. O comando de espera versátil do Linux nos permite descobrir quando um processo específico é concluído. O status de rescisão será devolvido como resultado, permitindo -nos identificar se o processo é bem -sucedido em encerrar ou falhar por algum outro motivo. O comando de espera continua a ser executado à medida que aguarda que tarefas específicas de fundo sejam concluídas. O comando Linux Wait é usado nos casos de uso abaixo para mostrar como funciona.
Exemplo # 1: Usando um comando Wait for Bash Single Process.
Usamos o comando Wait para especificar quando o processo de fundo de um script deve começar a processamento. No script Bash a seguir, usamos o comando ECHO que imprime a declaração "processo de fundo", o que significa que o processo de fundo está processando. Com este comando de eco, usamos o símbolo "&" que é usado para executar um comando em segundo plano. Em seguida, empregamos novamente os dois comandos de eco que imprimem a declaração "Primeira tarefa" e "segunda tarefa".
Depois disso, invocamos a espera que fará uma pausa para aguardar o processo de segundo plano após o segundo processo antes de passar para o terceiro processo. A terceira tarefa será processada no término do processo de fundo que será encerrado a qualquer momento.
#!/BIN/BASH
eco Processo de fundo e
ECHO Primeira tarefa
eco a segunda tarefa
espere
eco a terceira tarefa
A saída do comando Wait exibiu que, após a conclusão da primeira tarefa e das segundas tarefas, a terceira tarefa é processada. O comando Wait gera a declaração "Processo em segundo plano" quando a primeira e a segunda tarefas levam tempo para concluir.
Linux@VirtualBox: ~ Bash ./BASH.sh
Primeira tarefa
Segunda tarefa
Processo de fundo
Terceira tarefa
Exemplo # 2: Usando um comando Wait for Bash vários processos.
Como o script Bash anterior usa o comando Wait para o processo único, estamos usando o comando Wait no script Bash para vários processos a serem executados. Quando o comando Wait é usado com o sinalizador -n, ele apenas aguarda o processo inicial entre os processos em segundo plano. O script bash é fornecido abaixo, onde implantamos os três comandos do sono com valores específicos. O comando do sono é definido com o sinal "&" que já discutimos anteriormente, o que indica que os processos em segundo plano estão em execução.
O primeiro comando de sono indica que o processo de fundo precisa de "10" segundos para concluir. O processo de fundo precisa de “5” segundos para conclusão e o terceiro comando do sono requer “3” segundos para a execução do processo de fundo. Em seguida, o comando Wait -n é chamado, que apenas aguarda o processo mais curto. Aqui, o processo mais curto leva três segundos para ser concluído entre os outros processos. Quando o processo mais curto for concluído, a declaração de eco “concluída o primeiro emprego” será impressa.
Depois disso, implantamos novamente o comando Wait -n. Isso vai esperar novamente pelo menos processo demorado. Agora, o menos processo demorado leva cinco segundos à medida que o processo de tempo três segundos é executado. Depois de esperar cinco segundos do processo, a próxima declaração de eco "concluída no próximo trabalho" será exibida. O próximo comando de espera não usa bandeira, o que significa que esse comando de espera aguardará que todos os processos sejam concluídos primeiro e depois exibe a declaração de eco “concluiu todo o trabalho”.
#!/BIN/BASH
sono 10 e
sono 5 &
sono 3 &
espere -n
eco “concluiu o primeiro emprego.”
espere -n
eco “concluído no próximo trabalho.”
espere
eco “completou todo o trabalho.”
Os resultados do script Bash de vários processos com o comando Wait acima são exibidos na seguinte tela Bash Shell. A espera com os comandos da opção -n pausa por 3 e 5 segundos, que é a quantidade de tempo que leva para o primeiro e o próximo trabalho para terminar os comandos de espera e depois pausar por dez segundos, que é a quantidade de tempo que leva para o fundo restante processos para terminar.
Linux@VirtualBox: ~ Bash ./BASH.sh
“Primeiro emprego concluído.”
“Concluído no próximo trabalho.”
“Concluiu todo o trabalho.”
Exemplo # 3: Usando um comando Wait for Bash vários processos com ID do processo.
Quando estamos lidando com vários processos no script Bash com o comando Wait, o ID do processo é útil para identificar o processo. Aqui no script Bash, usamos o comando Echo para imprimir a declaração “Process1 por 3 segundos”. Em seguida, usamos o operador e “&&” para definir outro comando que é o comando do sono. O comando do sono tem um valor de "3", que é a hora de o processo de fundo ser concluído. Em seguida, declaramos a variável "ProcessId" que forneceu um "$!" valor. O símbolo “$!”Obtém o ID do processo do último comando executado. O último comando executado que leva "3" segundos é armazenado na variável "ProcessId".
Agora, especificamos outro comando de echo que imprime o “Process1 por 5 segundos” junto com o comando do sono. O comando do sono leva cinco segundos para a conclusão do segundo processo de fundo. Em seguida, imprimimos o horário atual usando a estrutura do dateTime da festa. Então, o comando Wait é utilizado onde a variável "ProcessId" é definida como um argumento. O comando Wait agora mantém o tempo de espera da variável ProcessID, que é de três segundos.
Após três segundos, o processo restante do script bash será concluído. Observe que temos outro comando de espera que é passado com o sinal “$!”Como argumento então, a última declaração de eco será executada. Para buscar o ID do processo de comando de última execução.
#!/BIN/BASH
eco "Process1 por 3 segundo" && Sono 3 &
ProcessId = $!
eco "Process1 por 5 segundos" && Sono 5 &
eco "horário atual $ (data +%t)"
aguarde $ processId
eco "Process1 Terminar Hora $ (data +%t) com status de saída $ $?"
espere $!
echo "Process2 Terminar Hora $ (data +%t) com status de saída $ $?"
A saída exibiu pela primeira vez a conclusão do processo, juntamente com o tempo para a conclusão. Então, o processo de horário atual é concluído. Depois disso, ocorreu a espera e, em seguida, o próximo comando de eco foi executado, que exibiu o valor de status de saída zero junto com o tempo de rescisão. O valor de saída zero de valor representa que o processo é encerrado com sucesso. Então, novamente, a pausa ocorre durante o tempo que o último processo leva para concluir e a última declaração será exibida.
Linux@VirtualBox: ~ Bash ./BASH.sh
Process1 por 5 segundos
Process1 por 3 segundos
Hora atual 00:31:20
Process1 Tempo de terminação 00:31:23 com status de saída 0
Process2 Tempo de terminação 00:31:25 com status de saída 0
Conclusão
O artigo fornece uma maneira de aguardar um processo específico para concluir no Linux. Usamos o comando Wait para esperar pelo processo de execução. Primeiro, usamos o comando Wait para o processo único para esperar e depois chamamos o comando Wait para os múltiplos processos. Então, o comando Wait é chamado sobre o ID do processo para obter o ID do processo de vários processos.