Wie zu warten, bis eine Aufgabe abgeschlossen ist, bevor Sie fortfahren shell-Skript
Habe ich zwei shell-scripts zu schreiben, der ausgeführt wird, nächtlich per cron-Zeitplan.
Auf meinem prod-server:
mysqldump -ufoo -pbar --opt --routines db > ~/sqldump/{$todays_date}.sql
ln -s ~/sqldump/{$todays_date}.sql latest.sql
Auf meinem Entwicklungs-server:
scp [email protected]:~/sqldump/latest.sql ~/sqldump
mysql -ufoo -pbar db < latest.sql
Habe ich zwei Fragen:
- In der Produktion-server-job, wie bekomme ich
$todays_date
füllen Sie das Datum? z.B., "2010-07-21" - Wie mache ich Schritt zwei warten, Schritt 1 an Ende in jedem job?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um heutiges Datum verwenden
date +%F
:Lesen Sie mehr über die verschiedenen Optionen, die Sie verwenden können, mit Datum
+
formatieren, check-out-Datum-man-Seite.Als zum warten, ich nehme an, du meinst Sie nicht möchten, führen Sie den Befehl auf Ihrem dev-server, bis die Befehle auf der prod-server sind fertig. Die beste Idee wäre, haben die dev-server starten Sie den Befehl per ssh (d.h.
ssh user@host "mysqldump ... > ... && ln -s ...
).Wenn Sie nicht tun wollen, die besten, die ich denken kann, ist die Verwendung einer temp-Datei, so dass die dump-Datei-Erstellung ist atomic:
Dann, wenn Sie Ihre dev-server-Anfrage ist der dump vom heutigen Datum, dann können Sie mit einer Schleife, bis der scp gelingt:
Es sei denn, Sie verwenden einen "&" am Ende des Befehls für Schritt eins, Schritt zwei wird automatisch warten.