O comando sleep
no Linux instrui seu computador a aguardar, ou seja, a não executar nenhuma ação por um tempo determinado. Embora possa parecer contraditório, essa pausa temporária pode ser crucial em várias situações. Este artigo explora como usar este comando do shell Bash de maneira eficaz.
A utilização do sleep
é direta. No terminal, basta digitar sleep
, inserir um espaço, especificar um valor numérico e pressionar Enter.
sleep 5
O cursor ficará invisível por cinco segundos e depois reaparecerá. Essencialmente, o comando sleep
interrompe o processamento do Bash pelo intervalo definido. No exemplo acima, a pausa foi de cinco segundos.
O comando sleep
suporta diferentes unidades de tempo, como dias, horas e minutos, além de segundos. Para especificar estas unidades, adicionamos os sufixos d
, h
, m
ou s
ao valor numérico. Por exemplo, para fazer o comando pausar por um dia, quatro horas, sete minutos e cinco segundos, a sintaxe seria:
sleep 1d 4h 7m 5s
O sufixo s
(segundos) é opcional. Se nenhum sufixo for adicionado, o comando sleep
interpretará o valor como segundos. Digamos que você queira uma pausa de cinco minutos e vinte segundos. O comando correto seria:
sleep 5m 20
Caso o sufixo m
seja omitido para minutos, o comando entenderá que são cinco segundos, seguido de mais vinte segundos. Portanto, a pausa seria de 25 segundos.
Muitos comandos requerem uma ordem específica para os seus parâmetros, mas sleep
é bastante flexível. Você pode especificar os parâmetros em qualquer ordem e o comando os interpretará corretamente. Além disso, ele aceita números decimais. Por exemplo, 0.5h
é uma forma válida de indicar uma pausa de meia hora.
Os seguintes comandos, apresentados de forma crescente em excentricidade, instruem o sleep
a aguardar por 10 segundos:
sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m
Utilizando o sleep
para retardar a execução de um comando
O comando sleep
pode ser usado para criar uma pausa antes da execução de outro comando. Por exemplo, este comando pausará por 15 segundos e, em seguida, emitirá um som de bipe.
sleep 15 && echo -en ' 07'
Usando sleep
para criar pausas entre comandos
É possível utilizar o sleep
para inserir pausas entre a execução de comandos. O seguinte comando listará os arquivos no diretório Documentos
, pausará por cinco segundos e depois mudará o diretório de trabalho para o diretório inicial do usuário.
ls -R ~/Documents && sleep 5 && cd ~
sleep
em Scripts para Pausar a Execução
Em scripts shell, o comando sleep
permite suspender a execução do script por um período específico. Isso é frequentemente usado para permitir que outros processos tenham tempo para concluir suas tarefas antes que o script continue a execução. Além disso, pode ser útil para controlar a taxa de requisições que um script envia a outros recursos.
Para exemplificar, o script abaixo utiliza o curl
para acessar um serviço web do Google. Ao fornecer um número ISBN de um livro, o serviço responde com dados JSON sobre o livro. Esses dados são processados pelo utilitário jq
para extrair o título do livro. Para evitar sobrecarregar o serviço web, o script utiliza o sleep
para pausar por um segundo entre as requisições.
Crie um arquivo com o seguinte conteúdo e salve-o como check_book.sh
.
#!/bin/bash for book in `cat $1` do echo $book":" curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | jq '.items | .[] | .volumeInfo.title' echo "" sleep 1 done echo "Concluído."
Para tornar o script executável, use o comando abaixo:
chmod +x check_book.sh
O script requer os utilitários curl
e jq
. Em sistemas baseados em Debian, como Ubuntu, use o apt-get
para instalar esses pacotes. Em outras distribuições Linux, utilize o gerenciador de pacotes correspondente.
sudo apt-get install curl
sudo apt-get install jq
Crie um arquivo de texto, books.txt
, e salve-o com a seguinte lista de números ISBN:
9781565921276 9781874416685 9781565921672 9780521431088 9781491941591
Execute o script check_book.sh
passando o arquivo books.txt
como parâmetro:
./check_book.sh books.txt
O script fará requisições ao serviço web do Google com um intervalo de um segundo entre cada uma. Após cada requisição, o título do livro correspondente ao ISBN será exibido.
O funcionamento interno do script check_book.sh
é detalhado em outros materiais. O script foi utilizado apenas para ilustrar um exemplo prático do uso do comando sleep
. Para mais informações sobre os componentes principais do script, consulte a página do projeto curl e o manual online do jq.