2011-08-27 14 views
6

puedo usar este comandocopia de seguridad utilizan la base de datos crontab con función de fecha

mysqldump -u"root" myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz 

pero cuando se ejecuta en crontab

* * * * * mysqldump -u"root" myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz 

(esta causa de error por fecha función, cuando se lo quito, crontab ejecuta buena)

en ubuntu, ocurre este error en el archivo de registro.

ubuntu CRON[xxxx] (user) CMD(mysqldump -u"root" myDB| gzip > mydb_`date+) 
ubuntu CRON[xxxx] (CRON) error (grandchild #5353 failed with exit status 2) 
ubuntu CRON[xxxx] (CRON) info (no MTA installed, discarding output) 
+1

Su crontab no es el mismo comando que está ejecutando desde la línea de comandos. Usted omitió la 'fecha +% d-% m-% Y' (señalando la falta de antecedentes) que es lo que hace que realmente funcione, ya que los antecedentes se ejecutan y devuelven el resultado de la función ..... – gview

+0

es lo mismo pero no puedo escribir con stackoverflow. – meotimdihia

+0

Sí, puedes. Usa los trazos para formatear parte de una línea como código; sangría por 4 o más espacios para formatear una o más líneas como código. Seleccione el rango de texto y haga clic en el ícono '{}' para hacer esto automáticamente. O puedes escapar de un backsick con una barra invertida: '\' '. –

Respuesta

13

% señales en un comando crontab se convierten en nuevas líneas, y todos los datos después de la primera % se envía a la entrada estándar del comando. Reemplace cada % con \%.

(Y sólo tenía 4 campos de tiempo: * * * *, que hay 5 (que más tarde fija la pregunta).)

+0

la pregunta fija es * * * * * – meotimdihia

+0

funciona ahora, gracias – meotimdihia

0

Desde el man 5 crontab:

El sexto campo `` '' (la resto de la línea) especifica el comando que se ejecutará .

La porción comando completo de la línea, hasta un salto de línea o% carácter, será ejecutado por/bin/sh o por la cáscara especifica en la variable SHELL del archivo crontab.

por ciento, signos (%) en el comando , a menos que se escapó con barra invertida(), se transforman en caracteres de nueva línea, y todos los datos después de la primera% se enviarán al comando como entrada estándar. No hay forma de dividir una sola línea de comando en varias líneas, como el "\" final del shell.

Cuestiones relacionadas