Como esperar que um processo específico seja concluído no Linux?

Como esperar que um processo específico seja concluído no Linux?

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.