Amish Geeks » cron Hier steht mal irgendwann ein toller Titel. Mon, 07 May 2012 20:22:54 +0000 en hourly 1 http://wordpress.org/?v=3.2.1 Prozentzeichen (%) in CronJobs /blog/prozentzeichen-in-cronjobs/ /blog/prozentzeichen-in-cronjobs/#comments Thu, 10 Dec 2009 18:47:09 +0000 Khark https://amish-geeks.de/blog/prozentzeichen-in-cronjobs/ Peinlich. Peinlich.
Da arbeitet man jahrelang* als Linuxadmin und dann sowas..

Aber der Reihe nach. Die Aufgabe war einfach, jeden Tag um 02:00 Uhr soll ein Backup aller MySQL-Datenbanken gemacht, mit bzip2 komprimiert und unter /media/backup/mysql-dbs.YYMMTT.bz2 abgelegt werden.

Lösen tut man das dann wie folgt:
00 2 * * * root mysqldump --all-databases --user=root --password=xxxxx |bzip2 > /media/backup/mysql-dbs.$(date +%y%m%d).bz2

Dieses ergibt aber nur eine tolle Fehlermail von Cron:

/bin/bash: -c: line 0: unexpected EOF while looking for matching `)’
/bin/bash: -c: line 1: syntax error: unexpected end of file

Das Problem ist, das Cron das Prozentzeichen (%) als NewLine interpretiert.
Daher muss es escaped werden, damit man es als Bestandteil eines Kommandos, z.B. bei date, verwenden kann.
Leider steht dies nicht in jeder Manpage. (Bei Debian steht es drin -> man 5 crontab)

Richtig ist also folgendes:
00 2 * * * root mysqldump --all-databases --user=root --password=xxxxx |bzip2 > /media/backup/mysql-dbs.$(date +\%y\%m\%d).bz2

* = Ich zähl die Ausbildung jetzt einfach mal dazu. :-)

]]>
/blog/prozentzeichen-in-cronjobs/feed/ 3