Como pausar um script Bash com o comando Linux Sleep

Bash shell no conceito de desktop Unity
Fatmawati Achmad Zaenuri / Shutterstock.com

O comando sleep faz com que seu computador Linux não faça nada. Pode ser contra-intuitivo, mas às vezes é necessário um período de inatividade. Este artigo mostra como usar esse comando shell Bash de maneira eficaz.

Usar sleepé fácil. Na linha de comando, digite sleepum espaço, um número e pressione Enter.

dormir 5

O cursor desaparecerá por cinco segundos e depois retornará. O que aconteceu? Usar sleepna linha de comando instrui o Bash a suspender o processamento pela duração fornecida. Em nosso exemplo, foram cinco segundos.

Nenhuma saída visível do comando sleep 5

Podemos passar as durações sleepem dias, horas e minutos, bem como em segundos. Para fazer isso, inclua um sufixo de d, h, m,ou scom a duração. Para fazer com que o sono pause por um dia, quatro horas, sete minutos e cinco segundos, use um comando como este:

dormir 1d 4h 7m 5s

O ssufixo (para segundos) é opcional. Sem sufixo, sleeptratará qualquer duração como segundos. Suponha que você queira fazer uma sleeppausa de cinco minutos e vinte segundos. Um formato correto deste comando é:

dormir 5m 20

Se você esquecer de fornecer o msufixo na duração dos minutos, você instruirá  sleepa fazer uma pausa de cinco segundos e depois novamente por vinte segundos. Então, sleepfará uma pausa de 25 segundos.

Muitos comandos exigem que você forneça parâmetros em uma ordem específica, mas sleepé muito tolerante. Você pode fornecê-los em qualquer ordem e sleepeles farão sentido. Você também pode fornecer um número de ponto flutuante como parâmetro. Por exemplo, 0,5h é uma forma válida de indicar que você deseja sleepfazer uma pausa de meia hora.

Recomendado:  Como incorporar um desenho do Google no Google Docs

Todos os comandos a seguir (cada vez mais excêntricos) dizem sleeppara pausar por 10 segundos.

dormir 10
dormir 5 5s
Sono 1 1 1s 1 1 1s 1 2
dormir 0,16667m

Usando Sleep para pausar antes de um comando

O sleepcomando pode ser usado para dar uma pausa antes da execução de um comando. Este comando faria uma pausa de 15 segundos e, em seguida, emitiria um bipe.

dormir 15 && echo -en '\ 007'

Usando Sleep para Pausar Entre Dois Comandos

Você pode usar sleeppara dar uma pausa entre dois comandos. Este comando listaria os arquivos em seu diretório de documentos, pausaria por cinco segundos e, em seguida, mudaria o diretório de trabalho atual para seu diretório inicial:

ls -R ~ / Documents && sleep 5 && cd ~

Saída de dois comandos separados por sono

Usando Sleep para pausar a execução de um script

Você pode usar o sleepcomando em scripts de shell para pausar a execução do script por um período de tempo preciso. Normalmente, você faria isso para permitir que algum processo tivesse tempo suficiente para ser concluído antes que o script continuasse o processamento. Você também pode usá-lo para limitar a taxa de solicitações que um script faz a outro recurso.

Para demonstrar exatamente isso, aqui está um script que chama um serviço da web do Google usando curl. Quando você consulta o serviço da web com o número ISBN de um livro, ele responde com um despejo de dados JSON sobre esse livro. Podemos analisar esses dados passando-os pelo jqutilitário para recuperar o título do livro. Para que o script não sobrecarregue o serviço da web, ele dorme por um segundo entre as solicitações da web.

Recomendado:  Como desligar a tela de um Chromebook quando conectado a um monitor externo

Crie um arquivo contendo o seguinte texto e salve-o como  check_book.sh.

#! / bin / bash

para livro em `cat $ 1`
Faz
 echo $ book ":"
 curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | jq '.items | . [] | .volumeInfo.title '
 echo ""
 dormir 1
feito

echo "Tudo feito."

Digite o seguinte comando para definir as permissões de execução e tornar o script executável.

chmod + x check_book.sh

O script requer os utilitários curle jq. Use apt-getpara instalar esses pacotes em seu sistema se estiver usando o Ubuntu ou outra distribuição baseada em Debian. Em outras distribuições Linux, use a ferramenta de gerenciamento de pacotes da distribuição Linux.

sudo apt-get install curl
sudo apt-get install jq

Crie um arquivo de texto contendo os seguintes números e salve-o como books.txt.

9781565921276
9781874416685
9781565921672
9780521431088
9781491941591

Execute o check_book.shscript e passe o books.txtarquivo como parâmetro.

./check_book.sh books.txt

Saída do script de shell check_book.sh

As solicitações são feitas ao serviço da web do Google em intervalos de um segundo. O título do livro aparecerá logo após a consulta de cada número ISBN.

Isso é tudo que há para fazer sleep. O funcionamento interno do check_book.shscript está além do escopo deste artigo. O script foi escolhido puramente para ilustrar um uso válido do sleepcomando. Se você deseja ler mais sobre os dois componentes principais do script, consulte a curl página do  projeto e o  jq manual on-line .