Foros del Web » Administración de Sistemas » Unix / Linux »

Crontab no funciona

Estas en el tema de Crontab no funciona en el foro de Unix / Linux en Foros del Web. Buenas, Tengo un Script para unas copias de seguridad que tengo que realizar. Si los ejecuto a mano funciona sin problemas, pero cuando lo configuro ...
  #1 (permalink)  
Antiguo 23/04/2016, 02:34
 
Fecha de Ingreso: abril-2016
Mensajes: 13
Antigüedad: 8 años
Puntos: 0
Crontab no funciona

Buenas,

Tengo un Script para unas copias de seguridad que tengo que realizar.

Si los ejecuto a mano funciona sin problemas, pero cuando lo configuro en crontab, no hay manera que me las haga.

Hago lo siguiente:

sudo nano /etc/crontab y añado la línea:

* * * * * /backup/shell/script.sh

Le pongo que se ejecute cada minuto, para no andar cambiando la hora constantemente.

He probado también de las siguientes formas:

* * * * * root /backup/shell/script.sh
* * * * * root sh /backup/shell/script.sh
* * * * * root bash /backup/shell/script.sh
* * * * * sh /backup/shell/script.sh

Incluso indicando horas y minutos exactos para que se ejecute en ese instante y nada de nada.

He reiniciado los servicios httpd y cron por si acaso, aunque creo que no es necesario.

El script, tiene permisos 755.

No se que más tengo que tener en cuenta o que debo probar para que funcione :S

PD: Lo he probado a hacer con crontab -e, pero no me entero como funciona. Todo el rato me dice comando inválido o algo así, cuando pulso '*', '/' o caracteres que no sean letras.

Gracias de antemano.
Saludos.
  #2 (permalink)  
Antiguo 23/04/2016, 03:59
Avatar de barna_rasta  
Fecha de Ingreso: agosto-2003
Mensajes: 214
Antigüedad: 20 años, 8 meses
Puntos: 11
Respuesta: Crontab no funciona

Buenos dias smartinez161289,
no mencionas que distribucion de LINUX tienes, y aunque son similares, tienen sus pequeñas diferencias.


Dale un ojo al
https://geekytheory.com/programar-ta...sando-crontab/

Pueba poniendo tu script en /usr/local/bin (con permisos de ejecucion)
con:
Cita:
crontab -e

[copia y pega]
PATH=
1 * * * * script.sh
Cita:
.--------------- minuto (0-59)
| .------------ hora (0-23)
| | .--------- día del mes (1-31)
| | | .------ mes (1-12) o jan,feb,mar,apr,may,jun,jul... (meses en inglés)
| | | | .--- día de la semana (0-6) (domingo=0 ó 7) o sun,mon,tue,wed,thu,fri,sat (días en inglés)
| | | | |
* * * * * comando a ejecutar
Para que lo ejecute el usuario 'root' # sudo crontab -e -u root

El archivo queda guardado en: /var/spool/cron/crontabs (en la mayoria de versiones)

Haz pruebas con un script sencillo inicialmente para ir depurando.

Por ejemplo:
Cita:
1 * * * * /usr/bin/who >>/tmp/crontab.log
Ejecuta la orden who todos los minutos 1 y guarda la salida en el fichero /tmp/crontab.log

Última edición por barna_rasta; 23/04/2016 a las 04:16
  #3 (permalink)  
Antiguo 23/04/2016, 12:10
 
Fecha de Ingreso: abril-2016
Mensajes: 13
Antigüedad: 8 años
Puntos: 0
Respuesta: Crontab no funciona

Hola barna_rasta,

Primer gracias por la respuesta.

Utilizo un Amazon Web Services con CentOS.

He movido es Script a /var/local/bin

Le he cambiado el * de minutos por */1, que lo he visto por Internet, pero tampoco me ha funcionado.

Dentro de /var/spool/cron/ en lugar de crontab, me aparece user, pero entiendo que el contenido es el mismo.

Voy a probar el ejemplo que me comentas en cuanto pueda y te digo.

Muchas gracias, si se te ocurre algo más avísame por favor que seguiré mirando!

Saludos.
  #4 (permalink)  
Antiguo 23/04/2016, 13:37
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crontab no funciona

¿Qué dice /var/log/cron? ¿no hay ningún correo local para root?
  #5 (permalink)  
Antiguo 23/04/2016, 14:32
 
Fecha de Ingreso: octubre-2011
Mensajes: 166
Antigüedad: 12 años, 6 meses
Puntos: 31
Respuesta: Crontab no funciona

Creo recordar que el editos por defecto de Centos es vi o vinm , su manejo es algo mas complejo que nano, si quieres emplear nano, ejecuta

export EDITOR=nano && crontab -e

luego agrega estas lineas por única vez

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

luego agrega loscrontabas que quieras, por ejemplo

* * * * * script.sh

el script.sh debe estar en algún directorio definido en el PATH , por ejemplo en /usr/local/bin
  #6 (permalink)  
Antiguo 27/04/2016, 02:09
 
Fecha de Ingreso: abril-2016
Mensajes: 13
Antigüedad: 8 años
Puntos: 0
Respuesta: Crontab no funciona

Buenas,

Tras varias pruebas más, he descubierto que el cron sí está funcionando y el problema es el Script, pero no entiendo porquè:

Cita:
#!/bin/bash
#Shell Script para la realización de las copias de seguridad

# Variable para capturar la fecha
dateBKP=$(date +"%Y-%m-%d_%H.%M_BKP")

# Crea el directorio con el nombre de carpeta de la variable
#echo $dateBKP
mkdir /backup/$dateBKP

#################
# DIRECTORIOS #
#################

## Wordpress
sudo rsync -avz /var/www/html/wordpress /backup/$dateBKP

## phpMyAdmin
sudo rsync -avz /var/www/html/phpmyadmin /backup/$dateBKP

#################
# BASE DE DATOS #
#################

## MySQL
sudo mysqldump --user=root --password=toor practicaDB > /backup/$dateBKP/backu$

#################
# LOGS #
#################

## Apache

# access_log
sudo rsync /etc/httpd/logs/access_log /backup/$dateBKP

# error_log
sudo rsync /etc/httpd/logs/error_log /backup/$dateBKP


## PHP
# Por defecto se guarda en error_log, sino se guardaria en php_errors.log
#sudo rsync /etc/php/php_errors.log /backup/$dateBKP

## MySQL
sudo rsync /var/log/mysqld.log /backup/$dateBKP
Si voy comentando las líneas, me crea el directorio, pero cuando llega a hacer el primer rsync para la carpeta de wordpress, no hace nada.

Sin embargo, si ejecuto a mano esa instrucción me hace la copia sin problemas :S

No se si tengo que abrir un nuevo post, ya que el tema ha variado o se puede continuar en este.

Muchas gracias por la ayuda!

Saludos.

PD: Me estoy habituando al vim jeje (así también aprendo)
  #7 (permalink)  
Antiguo 27/04/2016, 14:02
Avatar de barna_rasta  
Fecha de Ingreso: agosto-2003
Mensajes: 214
Antigüedad: 20 años, 8 meses
Puntos: 11
Respuesta: Crontab no funciona

Hola smartinez,
creo que el problema lo tienes en la definicion de la ruta,
cron/crontab no conoce la definicion del PATH del usuario y hay que definirlo,

localizando donde esta el commando 'rsync' en tu distro ( # locate rsync ) /usr/bin es lo habitual.
puedes:
---------- Definir la RUTA ó PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin en el crontab -e.
Cita:
Sin embargo, si ejecuto a mano esa instrucción me hace la copia sin problemas
viendo que funciona, una idea es mirar el PATH definido en el usuario.
ó
------- añadir la ruta en cada commando que utilices dentro de los script del crontab
algo asi en todos:
Cita:
## Wordpress
sudo /RUTA/rsync -avz /var/www/html/wordpress /backup/$dateBKP

Última edición por barna_rasta; 27/04/2016 a las 14:11
  #8 (permalink)  
Antiguo 27/04/2016, 15:28
 
Fecha de Ingreso: abril-2016
Mensajes: 13
Antigüedad: 8 años
Puntos: 0
Respuesta: Crontab no funciona

Hola Barna_rasta,

Al final está resultando ser un problema de permisos...

Al cambiar el usuario root a mi usuario, he eliminado todos los sudo.

Actualmente de ese Script, me sincroniza Wordpres, phpMyAdmin y MySQL, pero no los logs de Apache ni MySQL.

Es algo raro, porque una parte sí y la otra no.

Eso sí, si intento ejecutar las instrucciones de rsync para los logs, siempre me dice Permiso denegado. Si añado el sudo funciona sin problema.

El caso es que en el Script no me los coge de ninguna de esa manera.

Voy a seguir probando, con lo que me comentas y alguna cosa más que pueda encontrar a ver si sale :)

Gracias de nuevo crack!
Saludos.
  #9 (permalink)  
Antiguo 28/04/2016, 07:19
 
Fecha de Ingreso: octubre-2011
Mensajes: 166
Antigüedad: 12 años, 6 meses
Puntos: 31
Respuesta: Crontab no funciona

creo que el problema radica en que no puedes ejecutar tareas administrativas como root siendo usuario, lo mas simple es modificar el /etc/sudoers para que no pida pass al ejecutar sudo rsync , ademés debes teber en cuenta que las tareas de crñntab se realizan en baskground, o sea no las ves ejecutar , resumlendo, en un terminal ejecuta estos comandos
Código BASH:
Ver original
  1. su
  2. echo 'tu_usuario ALL=NOPASSWD: /usr/bin/rsync' >> /etc/sudoers
  #10 (permalink)  
Antiguo 29/04/2016, 09:04
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crontab no funciona

¿no sería más fácil agregar estas tareas al crontab de root?

Etiquetas: crontab, ip
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:45.