Vamos dar uma olhada em alguns exemplos da vida real de tarefas cron.
- Digamos que você possui um site e deseja enviar a todos os usuários do seu site um e-mail todos os dias. Tudo que você precisa fazer é escrever um script de envio de e-mail e configurar um cron job para executar esse script todos os dias.
- Digamos que você possui uma agência de publicidade e deseja lembrar a todos os anunciantes com saldo inferior a 5 $ para recarregar. Basta escrever um script que verifique o saldo de todos os anunciantes e quando estiver abaixo de 5 $ enviará uma notificação para o número do celular ou e-mail do anunciante. Em seguida, configure um cron job para executar o script a cada 5 a 10 minutos ou a cada hora.
Existem muitos outros usos de tarefas cron no Linux.
Neste artigo, vou mostrar como executar tarefas cron a cada minuto no Linux. Vou usar o Debian 9 Stretch para a demonstração. Mas você pode usar qualquer distribuição Linux moderna de sua escolha. Vamos começar.
Noções básicas do Crontab:
No Linux, você não precisa ser raiz a fim de executar tarefas cron. Você pode executar tarefas cron como qualquer usuário. Cada usuário no Linux pode usar um crontab arquivo para executar seu próprio conjunto de tarefas cron.
Por padrão, um usuário não tem um crontab arquivo no Linux. Você pode criar um crontab arquivo com o seguinte comando:
$ crontab -e
Se você estiver executando este comando pela primeira vez, deverá escolher um editor de texto da lista. Eu vou escolher nano, o padrão. Você pode escolher o que você gosta. Assim que terminar, pressione
O crontab o arquivo deve ser criado (se ainda não estiver disponível) e aberto com seu editor de texto favorito. Agora você pode adicionar seus próprios cron jobs no final deste arquivo e quando estiver satisfeito, basta salvá-lo e sair do editor de texto.
Sintaxe de execução de um comando a cada minuto:
A sintaxe de crontab arquivo é o seguinte:
minuto hora dayOfMonth mês dayOfWeek commandToRunAqui,
- minuto pode ser 0 para 59.
- hora pode ser também 0 para 59.
- dia do mês pode ser 1 para 31.
- mês pode ser 1 para 12.
- dia da semana pode ser 0 para 7. 0 e 7 significa domingo, 1 significa segunda-feira, 2 significa terça e assim por diante.
Para executar um commandToRun comando a cada minuto, você deve escrevê-lo no crontab arquivo da seguinte forma:
* * * * * commandToRunExecutando um trabalho Crob a cada minuto:
Agora que conhecemos as teorias, vamos adicionar um script simples cronômetro.sh para o crontab arquivo e veja como gerenciá-lo.
No cronômetro.sh script, só tenho as seguintes linhas de códigos. Tudo o que faz é criar um novo arquivo / home / shovon / bin / timer.registro (se ainda não existir) e anexa a saída do comando de data a ele.
Agora vamos adicionar o script ao nosso crontab e deixe-o funcionar a cada minuto com a seguinte linha:
* * * * * / home / shovon / bin / timer.sh
Depois de salvar o crontab arquivo e saia do editor de texto, o novo crontab arquivo deve ser instalado.
Após um minuto, um novo arquivo é cronômetro.registro é criado no diretório desejado como você pode ver na seção marcada da imagem abaixo.
De cronômetro.registro arquivo de log, é óbvio que o script cronômetro.sh corre a cada minuto.
Captura de erros dos Cron Jobs:
Para detectar erros de um cron job, você pode enviar os erros para um erro.registro arquivo e saídas normais para Acesso.registro arquivo por exemplo. Claro, você pode nomear os arquivos como quiser.
Para demonstrar isso, modifiquei meu script cronômetro.sh um pouquinho. Agora os erros são enviados para erro.registro arquivo no / home / shovon / bin diretório e as saídas são enviadas para Acesso.registro no / home / shovon / bin diretório.
No começo o / tmp / i_must_be_here arquivo não existe, então recebo o erro no erro.registro arquivo como você pode ver.
O Acesso.registro o arquivo está vazio no momento.
Agora vou criar o arquivo / tmp / i_must_be_here
E como você pode ver, a saída está no Acesso.registro arquivo agora.
Se desejar, você pode redirecionar a saída e os erros no mesmo arquivo da seguinte maneira:
Como você pode ver, as saídas STDIN e STDERR são enviadas para o Fora.registro Arquivo.
Certificando-se de que a execução do último trabalho foi concluída antes de executar o trabalho novamente:
Para que isso funcione, você pode criar um arquivo temporário logo após o início do trabalho e removê-lo antes de terminar. Então você pode verificar se o arquivo temporário existe antes de iniciar o trabalho. Em caso afirmativo, você pode sair do trabalho e executá-lo apenas quando o arquivo temporário não estiver disponível.
Este script simples faz exatamente isso.
Como você pode ver, o cronômetro.pid arquivo é criado.
Lendo o Acesso.registro arquivo prova que o cron job não é executado antes que o cron job anterior termine de ser executado. Como você pode ver, ele foi executado às 01:32:01 e da próxima vez deveria ter executado às 01:33:01, mas não. Em vez disso, funcionou às 01:35:01, cerca de 3 minutos depois.
Organizando as saídas do Cron Job para uma depuração fácil:
Você pode formatar as saídas para tornar seu cron job mais fácil de depurar.
Um exemplo de como isso pode ser feito é dado no seguinte script.
Como você pode ver, as saídas, erros e mensagens de sucesso são bem impressas no arquivo de log.
Você pode fazer coisas incríveis com cron jobs e scripts de shell. Eu demonstrei algumas das ideias aqui. Mas o céu é o seu limite. Sinta-se à vontade para experimentar todas as ideias que você tiver. Obrigado por ler este artigo.