Articles

Comando Bash Sleep: um guia rápido para usá-lo em seus Scripts

normalmente queremos que um script corra rápido, mas isso nem sempre é o caso. Às vezes faz sentido para o nosso script Bash usar o comando sleep antes de executar o próximo comando. Vamos descobrir quando…

O que é o comando de sono de Bash?

o comando de latência da Bash atrasa a execução do comando depois dele por um determinado período de tempo. O tempo de sono é expresso em segundos. O uso do comando sleep é comum ao agendar uma tarefa a cada X segundos ou quando um script depende de outro script para completar sua execução.,

Let’s look at three scenarios in which you would use the sleep command:

  1. em vez de executar um comando imediatamente, você deseja agendar a sua execução X segundos no futuro.
  2. um programa leva muito tempo para processar um conjunto de arquivos e quando o processamento está completo gera um arquivo para indicar isso. Você pode escrever um script que verifica se o arquivo existe e dorme por um determinado período de tempo, se não. Caso contrário executa o próximo passo do processo, com base nos arquivos gerados pelo primeiro programa.,você está chamando uma API de terceiros programaticamente e sabe que a API não permite mais de 60 pedidos por minuto. Dormir durante X segundos permite-lhe certificar-se de que não ultrapassa o número de pedidos por minuto permitidos pelo fornecedor de API.vamos começar!,

    Sintaxe Básica do Bash Comando de Suspensão

    A sintaxe básica do comando de suspensão em Bash é muito simples:

    sleep <SECONDS>

    Aqui está o que acontece se você executar na linha de comando:

    $ sleep 5$ 

    neste caso, após a execução do sono 5 de comando do Linux retorna o shell de volta depois de 5 segundos.

    E agora vamos passar para três exemplos práticos de como para você o comando de sono de Bash.,

    Cenário 1: o Sono de Comando que retarda a Execução de Outro Comando em um Script Bash

    vou escrever um simples shell Bash script para mostrar o exato comportamento do comando de suspensão…

    …considerando que o exemplo anterior não conseguia mostrar que o comando de suspensão devolvido o shell de volta depois de 5 segundos.

    let’s write a script that does what I have explained in Scenario 1, it delays the execution of a command by X seconds (in this case 5 seconds).

    é quase como executar um comando em um momento específico seguindo o mesmo princípio dos programadores de trabalho.,

    Então, criar uma forma muito simples de shell Bash script chamado de delay_cmd.sh:

    #!/bin/bash datesleep 5dateuptime 

    O comando date é usado para imprimir a data atual, antes e após o comando de suspensão, desta forma, você pode ver que o script é suspenso por 5 segundos.

    Após 5 segundos o comando uptime é executado.faz sentido?

    Em teoria, podemos escrever o mesmo script em uma única linha:

    #!/bin/bash date; sleep 5; date; uptime 

    Isto é porque o ponto-e-vírgula é usado no Linux para separar os diferentes comandos e executá-los sequencialmente.,

    em outras palavras, o Linux garante que cada comando completa antes de executar o próximo.

    Cenário 2: Script Bash que usa o comando Sleep para esperar que outro Script Complete

    neste exemplo eu criarei dois scripts:

    1. program_1.sh: dorme por 30 segundos e, em seguida, cria um arquivo chamado stage1.concluir. Isto basicamente simula um programa que leva muito tempo para completar uma tarefa específica e confirma a conclusão de sua execução através da criação da stage1.ficheiro completo.
    2. program_2.sh: uses a while loop and at every iteration checks if the stage1.,o ficheiro completo existe. Se ele não dorme por 6 segundos, se o arquivo existe ele imprime a mensagem ” arquivo stage1.o completo existe. Fase 1 completa, fase de partida 2…”.

    Aqui está program_1.sh:

    #!/bin/bash sleep 30touch stage1.complete 

    O comando touch é usado pelo primeiro programa para criar o stage1.completar o ficheiro após 30 segundos a partir do momento em que o programa é executado.e program_2.sh é o seguinte, nós estaremos usando uma Bash se outra declaração para implementá-lo:

    no segundo script Bash shell nós temos um loop infinito., Em cada iteração, o script:

    • verifica se o arquivo stage1.completo está presente.
    • Se o ficheiro não existir ele dorme durante 6 segundos
    • Se o ficheiro existir ele remove o stage1.completa o ficheiro e pára a execução com o comando de saída da Bash.,

    Antes de executar os dois scripts certifique-se de que ambos são executável usando o chmod +x comando:

    chmod +x program_*.sh

    Então, vamos executar os scripts…

    Vamos executar o program_1.sh primeiro, vamos executá-lo em segundo plano, para que possamos executar o program_2.sh imediatamente depois de que no mesmo terminal:

    Conforme o esperado, o segundo script mantém dormir por 6 segundos até que ele encontra o arquivo de stage1.complete o arquivo, e então ele pára a execução.,

    Scenario 3: Sleep Command to Control the Number of Calls to a Third Party API

    If you want to call an API using a Bash script you can use the curl command.

    Usando curl para chamar uma API é simples, vamos tomar por exemplo a seguinte API de ponto de extremidade:

    https://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b6907d289e10d714a6e88b30761fae22 

    Vamos escrever um script que usa o curl para executar uma solicitação GET contra ele e usa o comando de suspensão para limitar o número de chamadas de API em um determinado período de tempo.isto é feito para evitar ultrapassar quaisquer limites potenciais impostos pelo fornecedor da API.,

    Este é o programa que escrevi:

    poucas coisas sobre este programa:

    • A variável de contador é usada para contar o número de chamadas de API a serem executadas antes de sair do ciclo de while.
    • cURL é usado para executar os pedidos GET contra o endpoint API.
    • em cada iteração do ciclo while suspendemos o programa por 10 segundos com o comando sleep para limitar o número de chamadas da API a uma a cada 10 segundos.
    • incrementamos a variável de contador usando o operador aritmético $ ().,

    assim, execute o script:

    Como esperado duas chamadas de API são executadas e, em seguida, a execução do laço while pára porque o valor do contador variável é 3.

    conclusão

    mostrei – lhe diferentes formas de usar o comando de latência num programa Bash.

    E no processo eu cobri um monte de coisas diferentes:

    • executando scripts no fundo.
    • usando o operador aritmético.
    • Infinite while loops.variáveis de contador
    • .chamando uma API usando curl.
    • criar e remover ficheiros.,
    • A definir as permissões dos executáveis para os programas Bash.
    • usando o ponto e vírgula para executar os comandos sequencialmente.espero que faça todo o sentido!e tu? De que outra forma usarias o comando do sono em Bash? 🙂

      campo livre relacionado: descodificação de programação Bash