Ich habe diese Abfrage, die Updates aus einer Datenbank ausgibt, die älter als 7 Tage sind. Wie würde ich ein Skript erstellen, das die MySQL-Anweisung nimmt und in ein Skript einfügt, das von Cron ausgeführt werden soll?
echo "select name, reported_at from nodes where reported_at < curdate() -7;" |
mysql dashboard
Beispielausgabe:
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
Antwort1
Sie könnten eine Datei erstellen~/Pfad/zu/myquery.sql:
select name, reported_at from nodes where reported_at < curdate() -7;
Und um Ihre Crontab zu bearbeiten, führen Sie aus
crontab -e
Und fügen Sie in Ihrer Crontab eine Zeile hinzu
* * * * * mysql dashboard < ~/path/to/myquery.sql > ~/path/to/query/output
Um zu ändern, wie oft dieser Befehl ausgeführt wird, müssen Sie die fünf * am Anfang dieser Zeile ändern. Um zu verstehen, wie Sie dies richtig machen, können Sie sich Folgendes ansehen:diese Seite.
Antwort2
Speichern Sie es einfach in einer Datei und leiten Sie es dann in das mysql
Tool in Ihrer Crontab weiter.
* * * * * mysql ... < savedstatements.sql