Ajuda com script bash

Pessoal, bom dia.

Eu queria fazer um script em bash para, a cada certo período de tempo, ele rodasse um comando. Tem como fazer isso?

Obrigado.

2 curtidas

De maneira sequencial?

#!/bin/bash

while true; do
   echo "Natanael" # Comando a ser executado
   sleep 10        # Tempo de espera
done

Esse script uma vez executado escreve o texto Natanael a cada 10 segundos, para alterar o tempo use a regra:

  • Se for em segundos apenas coloque o número de segundos, exemplo 10
  • Se for em milissegundos coloque um ponto antes, por exemplo, .10 irá rodar a cada 10 milissegundos
  • Se for em minutos coloque m após o número, 10m irá rodar a cada 10 minutos, essa lógica vale pra horas (h) e até dias (d)

E claro, você pode combinar, pode colocar um número decimal como 10.8, nesse caso vai executar a cada 10.8 segundos porque o sleep vai entender como .10800

Naturalmente isso vai executar o comando, pra esperar primeiro e executar apenas após passar o primeiro período de tempo:

#!/bin/bash

while true; do
   sleep 10        # Tempo de espera
   echo "Natanael" # Comando a ser executado
done
1 curtida

olá @Passarinho_Azul , tudo bom?

uma alternativa é utilizar o crontab, com ele é possível determinar quando ele executará um script em sh, separei uns conteúdos sobre:

espero ter ajudado e boa sorte com o seu script

1 curtida

A solução do @Adriel_Filipe a depender do serviço que ira querer executar com o script, é uma excelente abordagem, deixo apenas de recomendação, se estiver utilizando uma distro com SystemD, utilizar ao invés do cron o Systemd-Timers - ArchWiki

1 curtida

Esse é o script bash, você troca o echo "Natanael" pelos comandos que vc quer executar

@Passarinho_Azul, não entendi muito bem, você quer criar e executar o script? Se esse for o caso, faça o seguinte:

# use o comando > ou o touch para criar o arquivo.
> Script-nome.sh

# use algum editor de texto, pode ser qualquer um, nesse caso vou usar o vim
# Eu aconselho a usar o nano que é um editor mais simples e fácil para terminal
vim Script-nome.sh

# após isso eu vou colar o código:
#!/bin/bash
while true; do
sleep 10 # Tempo de espera
echo “Natanael” # Comando a ser executado
done

# Pra poder executar, você vai precisar dar permissão ao arquivo:
chmod +x Script-nome.sh
# Depois é só executar com:
./Script-nome.sh

Se você não entendeu muito bem, aqui tem um vídeo ensinando melhor :slight_smile: : Shell Scripting - Criando scripts simples - comando echo - 06 - Linux - YouTube

A depender do comando, poderá simplesmente informar para o cron ou o timer, o qual os mesmos já executarão de forma automática, sem que precise executá-los manualmente ou definir sleep


Se quiser executar somente em uma linha no terminal…

while sleep 10;do echo 'Ola mundo!';done

Se pretende criar um script precisará salvar o exemplo já disponibilizado em um arquivo e conceder permissão de execução ou executar com o seguinte comando bash script.sh

Este tópico foi fechado automaticamente. Novas respostas não são mais permitidas.