{"id":30975,"date":"2021-03-26T16:13:10","date_gmt":"2021-03-26T15:13:10","guid":{"rendered":"https:\/\/eltallerdelbit.com\/?p=30975"},"modified":"2021-03-26T16:28:21","modified_gmt":"2021-03-26T15:28:21","slug":"comprobar-inicio-fin-cron-solaris","status":"publish","type":"post","link":"https:\/\/eltallerdelbit.com\/comprobar-inicio-fin-cron-solaris\/","title":{"rendered":"Comprobar el inicio y el fin de un CRON en Solaris buscando en logs"},"content":{"rendered":"
\n
\n <\/p>\n
<\/p>\n
\nPara comprobar los trabajos cron que se ejecutan actualmente en un sistema Solaris:<\/p>\n
<\/p>\n
\r\nrun-parts -v \u2013test \/etc\/cron.hourly\/\r\n<\/pre>\n
\n <\/p>\n
<\/p>\n
Reenviar salida de cron a fichero<\/span><\/h3>\n
\ncuando programamos un cron, es posible reenviar la salida del log del cron a un directorio y fichero concreto, por ejemplo:<\/p>\n
\r\n* * * * * mi-cron > \/log\/cron1\r\n<\/pre>\nDe esa forma sabemos que el cron ha dejado un log, con el timestamp<\/em> (la fecha y la hora).
\n <\/p>\n <\/p>\n
Reenviar salida de log de cron al log del sistema (syslog<\/em>)<\/span><\/h3>\n
\nAdem\u00e1s tambi\u00e9n podemos reenviar la salida del log de cron al fichero syslog<\/em>, con logger (logger introduce mensajes al log del sistema, con una etiqueta) as\u00ed:<\/p>\n <\/p>\n
\r\n*\/5 * * * * tu-cron-job 2>&1 | \/usr\/bin\/logger -t etiqueta\r\n<\/pre>\n <\/p>\n
<\/p>\n
Ver cuando se ha ejecutado y ha terminado un cron que no manda la salida a un fichero de log (buscar el cron en los logs del sistema<\/a>)<\/span><\/h3>\n
\npero si el cron est\u00e1 configurado para no dejar registro en ning\u00fan lado, sino para mandar la informaci\u00f3n de salida al agujero negro de \/dev-\/null<\/em>, as\u00ed:<\/p>\n\r\n*\/5 * * * * mi-cron-job > \/dev\/null 2>&1\r\n<\/pre>\n
\ny queremos encontrar informaci\u00f3n acerca de cuando ha terminado el cron en solaris, tendremos que buscarlo de otra forma.<\/p>\n
<\/p>\n
Normalmente en los sistemas Solaris el log del cron suele estar en \/var\/cron\/log<\/em><\/p>\n <\/p>\n
Lo que podemos hacer es usar el comando grep<\/strong><\/em> y buscar el nombre del cron en \/var\/cron<\/em><\/p>\n <\/p>\n
As\u00ed que buscamos con grep el nombre del cron en el fichero de log \/var\/cron\/log<\/em> :<\/p>\n\r\ngrep -i mi-cron-job\u00a0 \/var\/cron\/log\r\n<\/pre>\n <\/p>\n
Y encontraremos logueada la info del inicio del cron job:<\/p>\n
\r\n> CMD: \/root\/scripts\/mi-cron-job.sh >\/dev\/null 2>&1\r\nroot 8907 c Feb Mon 3 08:16:00 2020\r\n\u2026..\r\n\r\n\u2026..\r\n<\/pre>\n
\nPodemos ver que el cron job se ha lanzado a las 08:16<\/p>\n
<\/p>\n
Pero no podemos ver nada m\u00e1s porque debajo de la l\u00ednea de comienzo resulta que hay info registrada de otros crones y procesos posteriores.<\/p>\n
<\/p>\n
As\u00ed que lo que haremos es buscar por el PID de proceso que hemos visto en la l\u00ednea del log que indicaba el comienzo del cron:<\/p>\n
\r\nroot 8907 c Feb Mon 3 08:16:00 2020\r\n<\/pre>\n
\nel PID era 8907, as\u00ed que de nuevo usamos el comando grep y buscamos el PID 8907\u00a0 en el fichero\u00a0 \/var\/cron\/log<\/em><\/p>\ny finalmente ya hemos encontrado las l\u00edneas de informaci\u00f3n referentes al cron, tanto a su hora de comienzo como a su hora de finalizaci\u00f3n:<\/p>\n
\r\ngrep 8907\u00a0 \/var\/cron\/log\r\n<\/pre>\n\r\nroot 8907 c Feb Mon 3 08:16:00 2020\r\n\r\nroot 8907 c Feb Mon 3 08:56:00 2020\r\n<\/pre>\n
\nPor tanto vemos que el cron ha comenzado a las 08:16 y ha terminado a las 08:56
\n
\nY esta es una buena forma de comprobar cu\u00e1ndo se ha ejecutado un cron<\/strong>, y cu\u00e1ndo ha terminado un cron en Solaris<\/strong>.<\/p>\n <\/p>\n\n