¿Dónde está el archivo de registro cron en MacOSX Lion?

25

Quiero solucionar un trabajo cron que funcionó bien hasta una modificación reciente, pero no puedo encontrar el archivo de registro cron, ¿dónde está?

Ali
fuente
2
¿Es realmente un trabajo cron o estás usando launchd? Cron ha quedado en desuso en OS X.
jaberg
1
¿Estableció un archivo de registro para el trabajo cron?
daviesgeek
en realidad es un crontrabajo con el que lo configuré cron -ey puedo verlo cron -ly estoy seguro de que funcionó en Lion y antes en Snow leopard durante mucho tiempo.
Ali
y no, no configuro manualmente un archivo de registro para 'cron', aunque escribo en un archivo de registro dentro del trabajo y ha dejado de funcionar recientemente después de cambiar algo.
Ali
2
Ali, ya que tienes la respuesta, publícala como respuesta y acéptala. No lo edite en la pregunta. No solo se le permite, sino que se lo alienta a responder su propia pregunta.
Jason Salaz

Respuestas:

30

De manera predeterminada, cron no registra la salida de los trabajos ejecutados. Es posible registrar el hecho de que se han ejecutado cronjobs, pero ese tampoco es el valor predeterminado en OS X.

Para investigar la salida de ejecución de cronjob, sugiero modificar su línea de cronjob para redirigir STDOUT y STDERR a los archivos de registro. En su archivo crontab o después de ejecutarlo crontab -e, sin importar cómo lo haga, agregue algo como lo siguiente a su línea de trabajo:

0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log

Hacer esto debería enviar STDOUT (salida normalmente impresa o ecoada a STDOUT) a un archivo de texto llamado stdout.log en el directorio / tmp, y STDERR a stderr.log en el directorio temporal. Muchas utilidades usan STDERR para imprimir mensajes de error especiales cuando son errores de la aplicación, y no errores generados por la ejecución real del programa. (Puede leer más sobre STDERR en Wikipedia).

Jason Salaz
fuente
Gracias, eso es exactamente lo que he estado tratando de hacer, parece que cronpor alguna razón no puede ejecutar el trabajo en primer lugar. si ejecuto el trabajo yo mismo escribiendo el comando en el terminal, se ejecuta y sale al archivo de registro, pero si espero a cronque se ejecute, no sucede nada, al menos no hay cambios en el archivo de registro, estaba pensando que tal vez un "archivo de registro cron "o hubo rastros en la consola que podrían ayudarme a descubrir qué está pasando, recientemente cambié mi caparazón de bash a zsh, pero no creo que eso pueda haber afectado esto tampoco.
Ali
1
De acuerdo con erikslab.com/2011/02/04/logging-with-launchd , puede modificar el cron plist ( /System/Library/LaunchDaemons/com.vix.cron.plist) con una ruta Stdout / Stderr para depurar cron. No recuerdo si launchctl unloading e launchctl loading plist es suficiente, o dado que es un demonio del sistema si tuviera que reiniciar por completo. Sugeriría este último solo para estar seguro.
Jason Salaz el
21

Mucho más fácil simplemente agregar lo siguiente a /etc/syslog.conf:

cron.* /var/log/cron.log 

Luego reinicie syslog

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist 
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist 

Probado y trabajando en OSX 10.7.4

Fraidoon Sarwary
fuente
3
Me gusta esta idea, pero en 10.10.5, /etc/syslog.confdice mi # Note that flat file logs are now configured in /etc/asl.conf. Ese archivo tiene una sintaxis diferente, no me queda claro cómo configurar el registro en él.
Ken Williams
@KenWilliams, incluso si dice eso, syslog.conf todavía funciona, en High Sierra.
Monitor de peces el
15

De forma predeterminada, el "registro" no está habilitado. Pero puede obtener información útil ejecutando el mailcomando.

TL; DR en el mailcomando: presione enter para leer los mensajes, y luego presione qenter para salir.

William Entriken
fuente
44
Muy bueno gracias. La mía me mostró que había un comando no reconocido con mi Cron. ¡Salud!
Joshua Pinter
7

Pude encontrar el inicio de sesión de cron-job,

/var/mail/{user-name}

El siguiente es un registro de trabajo cron que obtuve por ejecutar un comando de AWS CLI,

From [email protected]  Fri Mar  2 10:00:00 2018
Return-Path: <[email protected]>
X-Original-To: build
Delivered-To: [email protected]
Received: by BuildServer1.local (Postfix, from userid 501)
    id A7A94296CBA3; Fri,  2 Mar 2018 10:00:00 +0100 (CET)
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <build@BuildServer1> /app/scripts/s3-sync.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=build>
X-Cron-Env: <USER=build>
X-Cron-Env: <HOME=/Users/build>
Message-Id: <[email protected]>
Date: Fri,  2 Mar 2018 10:00:00 +0100 (CET)

upload: ../../app/logs/debug.log to s3://**my-s3***/app/logs/debug.log
Vineeth
fuente
1
Ese es un mensaje de error almacenado en el buzón deuser
nohillside
@patrix, pude encontrar un trabajo cron exitoso también. Se actualizó la respuesta.
Vineeth
¡Agradable! ¡Debería ser la respuesta aceptada!
Trollhorn
3

Resultó cuando cron ejecuta el trabajo (como yo), /usr/local/binno está en el PATH.
Encontré esto por prueba y error y construí el trabajo desde cero a partir de cosas simples que sabía que funcionarían y gradualmente agregué cosas hasta que encontré el problema.

Acerca de las otras sugerencias y respuestas:
por alguna razón (al menos en mi máquina, que está ejecutando un Lion actualizado de SnowLeopard) cronno utiliza los parámetros especificados en los archivos plist que launchdestán destinados a leer /System/Library/LaunchDaemons/com.vix.cron.plisto tal vez cron en Lion no escribe nada a stdout o stderr.

Por cierto, estoy usando http://s3tools.org/s3cmd en syncuna carpeta con un bucket de Amazon S3 como copia de seguridad (como un DropBox primitivo).

Ali
fuente