Eu tenho esta consulta que gera atualizações com mais de 7 dias de um banco de dados. Como eu faria um script que pegasse a instrução MySQL e a colocasse em um script para ser executado pelo cron.
echo "select name, reported_at from nodes where reported_at < curdate() -7;" |
mysql dashboard
Exemplo de saída:
name reported_at
xadf.edu 2012-03-21 14:39:02
xadf.edu 2012-03-22 15:30:01
adsfsadf.edu 2012-03-14 14:40:02
ekdahlj.edu 2012-03-23 03:40:04
adfasdf.net 2012-03-21 14:42:02
eqrsdr.edu 2012-03-15 14:42:02
qwerwfva.edu 2012-03-13 14:42:03
qerqwer.edu 2012-03-23 14:40:01
adfasde.edu 2012-03-05 17:42:03
bsfdgs.edu 2012-03-23 15:20:01
adfadsf.edu 2012-03-23 14:43:01
Responder1
Você poderia criar um arquivo~/caminho/para/myquery.sql:
select name, reported_at from nodes where reported_at < curdate() -7;
E para editar seu crontab execute
crontab -e
E no seu crontab adicione uma linha
* * * * * mysql dashboard < ~/path/to/myquery.sql > ~/path/to/query/output
Para editar a frequência com que este comando é executado, você deve editar os cinco * no início dessa linha. Para entender como fazer isso corretamente, você pode conferiresta página.
Responder2
Basta salvá-lo em um arquivo e redirecioná-lo para a mysql
ferramenta em seu crontab.
* * * * * mysql ... < savedstatements.sql