¿Por qué mi script svn backup shell funciona bien en terminal pero falla en crontab?

Tengo un script de copy de security svn en networkinghat linux. vamos a llamarlo svnbackup.sh

Funciona bien, cuando lo ejecuto en la terminal.

Pero cuando lo pongo en crontab, no devolverá el svnserve, incluso si los datos están respaldados correctamente.

¿¿¿Que pasa conmigo???

killall svnserve tar -zcf /svndir /backup/ svnserve -d -r /svndir 

Por lo general, 'medio ambiente' es el problema en un trabajo cron que funciona cuando se ejecuta 'en la terminal', pero no cuando lo ejecuta cron. Lo más probable es que tu RUTA no esté configurada para include el directory donde guardas svnserve .

Utilice un nombre de ruta absoluto para svnserve o establezca PATH adecuadamente en el script.

Puede depurar, en parte, agregando una línea como:

 env > /tmp/cron.job.env 

a su secuencia de commands para ver exactamente qué tan pequeño ambiente se establece cuando se ejecuta su tarea cron.

Si está intentando hacer una copy de security de una versión en vivo de un repository, probablemente debería usar svnadmin hotcopy . Dicho esto, aquí hay algunas posibilidades que vienen a la mente en cuanto a lo que podría estar mal:

  1. Has puesto cada una de esas declaraciones como inputs separadas en tu crontab (no se puede distinguir de la Q).
  2. El command svnserve toma una contraseña, que cron, a su vez, no puede suministrar.
  3. El command svnserve bloquea o cuelga indefinidamente y es asesinado por cron.
  4. El command svnserve no está en su RUTA en cron.

Suponiendo que svnserve no toma una contraseña, esto podría solucionar el problema:

 #! /bin/bash # backup_and_restart_svnserve.sh export PATH=/bin:/sbin:/usr/bin:/usr/local/bin # set up your path here killall svnserve && \ tar -zcf /svndir /backup/ && \ svnserve -d -r /svndir >/dev/null 2>&1 & 

Ahora, use "backup_and_restart_svnserve.sh" como script para ejecutar. Como se ejecuta en segundo plano, es de esperar que continúe ejecutándose incluso cuando cron ejecute la siguiente tarea.