Como pausar um script bash com o comando suspend do Linux

Conteúdo

Bash shell no conceito de desktop Unity

O comando Suspend faz com que o seu computador Linux não faça nada. Talvez seja contra-intuitivo, mas de vez em quando o que é necessário é um período de inatividade. Esta postagem mostra como usar este comando bash shell efetivamente.

Usando sleep é facil. No tipo de linha de comando sleep, um espaço, um número e pressione Enter.

dormir 5

O cursor desaparecerá por cinco segundos e depois retornará. O que aconteceu? Usando sleep na linha de comando, você diz ao Bash para suspender o processamento pelo tempo que você forneceu. Em nosso exemplo, foram cinco segundos.

Nenhuma saída visível do comando de suspensão 5

Podemos mover durações para sleep em dias, horas e minutos, bem como em segundos. Para fazer isso, inclui um sufixo de d, h, m, o s com a duração. Para fazer o sonho parar por um dia, quatro horas, sete minutos e cinco segundos, use um comando como este:

dormir 1d 4h 7m 5s

a s sufixo (por segundos) é opcional. Sem sufixo sleep tratará qualquer duração como segundos. Suponha que você queira ter sleep pausar por cinco minutos e vinte segundos. Um formato correto para este comando é:

dormir 5m 20

Se você esquecer de fornecer o m sufixo em extensão de minuto, irá instruir sleep pausar por cinco segundos e depois novamente por vinte segundos. Então sleep vai parar para 25 segundos.

Muitos comandos exigem que você forneça parâmetros em uma ordem específica, mas sleep é muito indulgente. Você pode fornecê-los em qualquer ordem e sleep vai dar sentido a eles. Além disso, você pode fornecer um número de ponto flutuante como parâmetro. Como um exemplo, 0,5 h é uma maneira válida de indicar que você deseja sleep faça uma pausa de meia hora.

Todos os comandos a seguir (cada vez mais excêntrico) eles dizem sleep pausar 10 segundos.

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

Usando suspender para pausar antes de um comando

a sleep O comando pode ser usado para pausar antes da execução de um comando. Este comando pausaria por 15 segundos e então ele apitaria.

dormir 15 && echo -en '07'

Usando suspender para pausar entre dois comandos

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

ls -R ~ / Documentos && dormir 5 && cd ~

Saída de dois comandos separados para dormir

Usando sleep para pausar a execução do script

Você pode usar o sleep comando em scripts de shell para pausar a execução do script por um período de tempo preciso. Regularmente, Eu faria isso para permitir que algum procedimento tivesse tempo suficiente para ser concluído antes que o script continuasse seu processamento. Você também pode usá-lo para limitar as 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 ISBN número de um livro, responde com um despejo de dados JSON sobre esse livro. Podemos analisar esses dados passando-os pelo jq utilitário para recuperar o título do livro. Para que o script não estresse o serviço web, dormir por um segundo entre as solicitações da web.

Crie um arquivo contendo o seguinte texto 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:$livro | jq '.itens | .[] | .volumeInfo.title'
 echo ""
 dormir 1
done

echo "Tudo feito."

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

chmod +x check_book.sh

O script precisa do curl e jq Serviços de utilidade pública. Usar apt-get para instalar esses pacotes em seu sistema se você estiver usando Ubuntu ou outra distribuição baseada em Debian. Em outras distribuições Linux, use a ferramenta de gerenciamento de pacotes de sua 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.sh script e passe o books.txt arquivo como parâmetro.

./check_book.sh books.txt

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 sleep. O funcionamento interno do check_book.sh script estão além do escopo desta postagem. O roteiro foi escolhido apenas para ilustrar um uso válido do sleep comando. Se você quiser ler mais sobre os dois componentes principais do script, Veja o curl página do projeto e ele jq Manual Online.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.