Dove si trova il file di registro cron in MacOSX Lion?


25

Voglio risolvere un lavoro cron che ha funzionato bene fino a una recente modifica, ma non riesco a trovare il file di registro cron, dov'è?


2
È davvero un lavoro cron o stai usando launchd. Cron è stato deprecato su OS X.
jaberg

1
Hai impostato un file di registro per il processo cron?
daviesgeek,

in realtà è un cronlavoro con cui lo ho impostato cron -ee posso vederlo cron -le sono sicuro che ha funzionato su Lion e prima ancora su Snow Leopard per molto tempo.
Ali,

e no, non imposto manualmente un file di registro per 'cron' stesso, anche se scrivo su un file di registro all'interno del lavoro e ha smesso di funzionare di recente dopo aver cambiato qualcosa.
Ali

2
Ali, dato che hai la risposta, per favore pubblicala come risposta e accettala. Non modificarlo nella domanda. Non sei solo autorizzato, ma incoraggiato, a rispondere alla tua domanda.
Jason Salaz,

Risposte:


30

Per impostazione predefinita, cron non registra l'output dei lavori eseguiti. È possibile registrare il fatto che cronjobs è stato eseguito, ma non è nemmeno quello predefinito su OS X.

Per esaminare l'output dell'esecuzione di cronjob, suggerisco di modificare la linea cronjob per reindirizzare STDOUT e STDERR ai file di log. Nel tuo file crontab o dopo l'esecuzione crontab -e, comunque tu vada a questo proposito, aggiungi qualcosa di simile alla tua linea di lavoro:

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

Ciò dovrebbe inviare STDOUT (output normalmente stampato o ripetuto a STDOUT) a un file di testo chiamato stdout.log nella directory / tmp e STDERR a stderr.log nella directory temp. Molte utility usano STDERR per stampare messaggi di errore speciali quando sono errori dell'applicazione e non errori generati dall'esecuzione effettiva del programma. (Puoi leggere di più su STDERR su Wikipedia.)


Grazie, è esattamente quello che ho cercato di fare, sembra che cronper qualche motivo non riesca a eseguire il lavoro in primo luogo. se eseguo il lavoro da solo digitando il comando nel terminale che esegue e l'output nel file di registro ma se aspetto l' cronesecuzione, non succede nulla, almeno nessuna modifica nel file di registro, pensavo forse un "file di registro cron "o c'erano delle tracce nella console che potevano aiutarmi a scoprire cosa stava succedendo, recentemente ho cambiato la mia shell da bash a zsh ma non credo che avrebbe potuto influire su questo.
Ali

1
Secondo erikslab.com/2011/02/04/logging-with-launchd , potresti modificare il cron plist ( /System/Library/LaunchDaemons/com.vix.cron.plist) con un percorso Stdout / Stderr per eseguire il debug di cron stesso. Non ricordo se launchctl unloading e launchctl loading il plist è sufficiente, o perché è un demone di sistema Se desideri essere necessario riavviare tutto. Suggerirei quest'ultimo per essere sicuro.
Jason Salaz,

21

Molto più semplice aggiungere semplicemente quanto segue a /etc/syslog.conf:

cron.* /var/log/cron.log 

Quindi riavviare syslog

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

Testato e funzionante su OSX 10.7.4


3
Mi piace questa idea, ma in 10.10.5, /etc/syslog.confdice il mio # Note that flat file logs are now configured in /etc/asl.conf. Quel file ha una sintassi diversa, non mi è chiaro come configurare l'accesso.
Ken Williams,

@KenWilliams anche se dice che, syslog.conf funziona ancora, su High Sierra.
Fish Monitor

15

Per impostazione predefinita, la "registrazione" non è abilitata. Ma potresti ottenere alcune informazioni utili eseguendo il mailcomando.

TL; DR sul mailcomando: premere Invio per leggere i messaggi, quindi premere qInvio per uscire.


4
Molto bene, grazie. Il mio mi ha mostrato che c'era un comando non riconosciuto con il mio Cron. Saluti!
Joshua Pinter,

7

Sono stato in grado di trovare l'accesso cron-job,

/var/mail/{user-name}

Di seguito è riportato un registro lavori cron che ho ottenuto per l'esecuzione di un comando CLI AWS,

From build@BuildServer1.local  Fri Mar  2 10:00:00 2018
Return-Path: <build@BuildServer1.local>
X-Original-To: build
Delivered-To: build@BuildServer1.local
Received: by BuildServer1.local (Postfix, from userid 501)
    id A7A94296CBA3; Fri,  2 Mar 2018 10:00:00 +0100 (CET)
From: build@BuildServer1.local (Cron Daemon)
To: build@BuildServer1.local
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: <20180302090000.A7A94296CBA3@BuildServer1.local>
Date: Fri,  2 Mar 2018 10:00:00 +0100 (CET)

upload: ../../app/logs/debug.log to s3://**my-s3***/app/logs/debug.log

1
Questa è una mail di errore memorizzata nella casella di posta diuser
nohillside

@patrix, sono stato in grado di trovare anche un lavoro cron di successo. Aggiornato la risposta.
Vineeth,

Bello! Dovrebbe essere la risposta accettata!
Trollhorn

3

Si è scoperto quando cron sta eseguendo il lavoro (come me), /usr/local/binnon è in PATH.
Ho trovato questo per tentativi ed errori e costruendo il lavoro da zero da una semplice cosa che sapevo avrebbe funzionato e gradualmente ho aggiunto le cose fino a quando non ho trovato il problema.

Informazioni su altri suggerimenti e risposte:
per qualche motivo (almeno sulla mia macchina, che esegue un Lion aggiornato da SnowLeopard) cronnon utilizza i parametri specificati nei file di plist che launchdsi desidera leggere /System/Library/LaunchDaemons/com.vix.cron.plisto che cron su Lion non scrive nulla su stdout o stderr.

A proposito, sto usando http://s3tools.org/s3cmd in syncuna cartella con un bucket Amazon S3 come backup (come un DropBox primitivo).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.