Problema ejecución script en cron [solucionado]

Imagen de feizh
0 puntos

Buenos días,

Tengo el siguiente problema: utilizo un script para comprobar que existen una serie de servicios corriendo en unos servidores que mantengo, de tal manera que se genere un fichero de texto con un resumen de la ejecución y se envíe por correo si ha habido alguna incidencia.

Cuando ejecuto el script desde la línea de comandos ( . /home/administrador/nmon.sh) se escriben todas las líneas en el fichero de texto y se ejecutan todos los comandos del script. Esto lo he comprobado concienzudamente, realiza la ejecución completa tal y como quiero. En cambio, si lo programo para ser invocado desde cron, sólo se ejecuta hasta un determinado punto. He probado una y otra y vez y se me escapa qué puedo estar haciendo mal.

A continuación os pego las primeras líneas del script hasta el momento en que se para:

#!/bin/bash

if [ -d /var/log/nmon ]
then
touch /var/log/nmon/informe.`date +%d%m20%y`
else
mkdir /var/log/nmon
touch /var/log/nmon/informe.`date +%d%m20%y`
fi

echo Diary process check 0.1 >> /var/log/nmon/informe.`date +%d%m20%y`
date >> /var/log/nmon/informe.`date +%d%m20%y`
hostname >> /var/log/nmon/informe.`date +%d%m20%y`

declare -a mat
declare -a aux
echo Control cron a.1 >> /var/log/nmon/informe.`date +%d%m20%y`
mat=(proxy bind www-data)
echo Control cron a.2 >> /var/log/nmon/informe.`date +%d%m20%y`
aux=(squid dns http)
echo Control cron a.3 >> /var/log/nmon/informe.`date +%d%m20%y`
flag=0

La línea "Control a.2" ya no aparece impresa en los ficheros "informe.*". Así que deduzco que a partir de ahí no continúa la ejecución del script. No sé si puede haber algún problema con la matriz de cadenas de caracteres. Si es de utilidad aquí os dejo info del sistema:

2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 23:42:43 UTC 2011

Gracias de antemano!

Imagen de tRaCk3r
+1
0
-1

¿Algún problema con los permisos? si no es eso, ni idea del problema :S

+1
0
-1

 


tRaCk3r
http://tetosoft.com
ubuntu user #007044
linux user #319025
PC number #309252
Imagen de feizh
+1
0
-1

Tiene permisos de ejecución para usuario, grupo y otros: rwx r-x r-x. Si no me equivoco, cron es ejecutado por root, por eso me cercioré previamente de que los permisos estaban bien. Gracias de todas formas.

+1
0
-1
Imagen de feizh
+1
0
-1

Buenos días, os dejo la solución que he adoptado al final y comprobado que funciona.

La sentencia for, invocada desde cron, programada de diferentes maneras no era ejecutada, mientras que desde la línea de comandos sí. Probé con diferentes sintaxis:

- for (( i=0; i<3; i++))
- for i in 0 1 2

Logré acotar el problema y quedó claro que en el momento que la ejecución llegaba a una línea con el uso de la variable ${mat[$i]} , ésta paraba sin leer el código que había de ahí en adelante.

No sé a qué es debido, así que he optado por descomponer el bucle for y no utilizar un vector de cadenas de caracteres. Ahora el script realiza sus tareas con normalidad.

Un saludo

+1
0
-1