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á?
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á?
De forma predeterminada, cron no registra la salida de los trabajos ejecutados. Es posible registrar el hecho de que los cronjobs se han ejecutado, pero tampoco es el predeterminado en OS X.
Para investigar el resultado de la ejecución del cronjob, sugiero modificar la línea de su cronjob para redireccionar STDOUT y STDERR a los archivos de registro. En su archivo crontab o después de ejecutar 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
Al hacer esto, debe enviarse STDOUT (normalmente impresa o con eco 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 se trata de errores de aplicación y no de errores generados por la ejecución real del programa. (Puede leer más sobre STDERR en Wikipedia).
Es mucho más fácil simplemente agregar lo siguiente a /etc/syslog.conf
:
cron.* /var/log/cron.log
Luego reinicia 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
Por defecto, el "registro" no está habilitado. Pero puede obtener información útil ejecutando el comando mail
.
TL; DR en el comando mail
: presione Intro para leer los mensajes y luego q
e ingrese para salir.
Resultó cuando cron está ejecutando el trabajo (como yo), /usr/local/bin
no está en PATH
.
Encontré esto por prueba y error y construyendo el trabajo desde cero a partir de cosas simples que sabía que funcionarían y gradualmente agregué cosas hasta que encontré el problema.
Sobre las otras sugerencias y respuestas:
Por alguna razón (al menos en mi máquina, que está ejecutando un Lion actualizado desde SnowLeopard) cron
no usa los parámetros especificados en los archivos plist que launchd
está preparado para leer /System/Library/LaunchDaemons/com.vix.cron.plist
o quizás no lo hace cron en Lion escribe cualquier cosa a stdout o stderr.
Por cierto, estoy usando enlace para sync
una carpeta con un depósito de Amazon S3 como copia de seguridad (como un DropBox primitivo) .
Pude encontrar el inicio de sesión cron-job,
/var/mail/{user-name}
A continuación se encuentra un registro de trabajo cron que obtuve para ejecutar un comando CLI de AWS,
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