Skript, das MySQL-Abfragen verwendet, um Ausgaben automatisch zu entfernen

Skript, das MySQL-Abfragen verwendet, um Ausgaben automatisch zu entfernen

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 mysqlTool in Ihrer Crontab weiter.

* * * * * mysql ... < savedstatements.sql

verwandte Informationen