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:
- em vez de executar um comando imediatamente, você deseja agendar a sua execução X segundos no futuro.
- 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:
- 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.
- 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 oprogram_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