Fork me on GitHub

Viagens, opiniões e afins

by Andre Fonseca


Colocando uma tarefa no cron

Esse é daqueles posts que escrevo para não esquecer algumas coisas.  Nessa semana precisei colocar um job no cron do meu sistema para que ele apagasse todos os arquivos que foram criados a mais de X minutos. Esse job deveria rodar de 10 em 10 minutos.  A linha ficou assim:

*/1 * * * * for name in `find /opt/participacoes/uploads/videos  -name '*' -type f  -cmin +3 -print`; do echo $name; rm -f $name ; done > /dev/null 2>&1

Essa linha pega todos os arquivos dentro de uma pasta e joga seus nomes numa lista. Essa lista é lida no loop e o comando de remove é feito.  Uma coisa interessante nessa lista é que só pega arquivos regulares, tudo isso graças a opção -type f. Você pode ver mais  opções digitando

man find

Outro detalhe legal dessa linha é como você define o intervalo de tempo para execução de algo no cron. No cron, funciona da seguinte forma: A B C D E onde cada um é:

  • A – o minuto no qual quer que seu job execute. Ex: 0 ou 30
  • B – hora
  • C – dia
  • D – mes
  • E – ano

Se caso queira fazer algo como intervalo de tempo (quero que algo rode a cada 10 minutos) você pode usar */10(intervalo de tempo).

Existe ainda a opção de usar alias especiais do tipo @daily. Para mais informação, peça ajuda ao google ou ao man na sua linha de comando.

Uma última coisa é que estou jogando a saída da execução para o dev/null (para o limbo – lugar nenhum). Assim eu não fico com alertas e saidas indesejadas.

Published by Andre, on maio 26th, 2011 at 3:01 pm. Filled under: automação Tags: , , , No Comments

Robot do twitter atrapalhando meu acesso a ele

Esse é daquela séria de post que escrevo para lembrar como fazer depois.  A pouco tempo atrás, para exercitar um pouco, resolvi fazer um programa que lê meu twitter e diante a um tipo de post faz uma ação.  Após o código pronto e testado,  coloquei tal código agendado no cron do Ubuntu do meu servidor. A questão é que devido aos problemas de ataques de hackers  (ataque de deny service onde você inunda um servidor de requisições e faz ele travar – eu acho) , o Twitter ficou criterioso quanto a acessos regulares (eu também acho, não tenho certeza).  A verdade é que não consigo acessar (para ser mais exato, não consigo enviar um twitter) do meu computador.

Primeira ação foi testar via Iphone : tudo funcionou perfeito. Logo é algo com minha máquina mesmo. Tentei do notebook e foi legal. Logo definitivamente era meu servidor que tinha o cron com o robot.

A segunda ação foi desabilitar o robot. Para isso teria que tirar a tarefa da tabela de execução cron. Aí que veio dúvida : onde diabos tinha colocado a chamada. Geralmente o cron, tem arquivos (chamados de crontable) nos diretórios:  /usr/bin/crontab /etc/crontab /usr/share/man/man5/crontab.5.gz /usr/share/man/man1/crontab.1.gz

Para saber onde está você pode dar o seguinte comando:

whereis crontab

Este comando irá mostrar as localizações dentro do seu sistema do arquivo crontab.
Feito isso partir para ver o conteúdo do arquivo. E não achei nenhuma referência da chamada ao meu robot. Logo, após algumas buscas no google, lembrei que tinha feito a configuração de forma diferente: eu usei um comando crontab.

crontab -e

Com este comando você tem acesso a tabela que está associada ao seu usuário (me corrijam se falei besteira) e lá estava a entrada com a execução do código. Tirei (deletei mesmo) a linha com a configuração e agora é aguardar para ver se era isso mesmo a causa de eu não conseguir acessar o twitter.

Published by Andre, on agosto 9th, 2009 at 1:09 pm. Filled under: atualidades,Informática,ruby Tags: , , , No Comments