¿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:
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).
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:
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.
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).
cron
trabajo con el que lo configurécron -e
y puedo verlocron -l
y estoy seguro de que funcionó en Lion y antes en Snow leopard durante mucho tiempo.Respuestas:
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).
fuente
cron
por 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 acron
que 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./System/Library/LaunchDaemons/com.vix.cron.plist
) con una ruta Stdout / Stderr para depurar cron. No recuerdo silaunchctl unload
ing elaunchctl load
ing 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.Mucho más fácil simplemente agregar lo siguiente a
/etc/syslog.conf
:Luego reinicie syslog
Probado y trabajando en OSX 10.7.4
fuente
/etc/syslog.conf
dice 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.De forma predeterminada, el "registro" no está habilitado. Pero puede obtener información útil ejecutando el
mail
comando.TL; DR en el
mail
comando: presione enter para leer los mensajes, y luego presioneq
enter para salir.fuente
Pude encontrar el inicio de sesión de cron-job,
El siguiente es un registro de trabajo cron que obtuve por ejecutar un comando de AWS CLI,
fuente
user
Resultó cuando cron ejecuta el trabajo (como yo),
/usr/local/bin
no está en elPATH
.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)
cron
no utiliza los parámetros especificados en los archivos plist quelaunchd
están destinados a leer/System/Library/LaunchDaemons/com.vix.cron.plist
o tal vez cron en Lion no escribe nada a stdout o stderr.Por cierto, estoy usando http://s3tools.org/s3cmd en
sync
una carpeta con un bucket de Amazon S3 como copia de seguridad (como un DropBox primitivo).fuente