Voglio sapere come posso vedere esattamente cosa stanno facendo i lavori cron su ogni esecuzione. Dove si trovano i file di registro? O posso inviare l'output alla mia email? Ho impostato l'indirizzo email per inviare il log quando il cron job viene eseguito ma non ho ancora ricevuto nulla.Cron Job Log - Come accedere?
risposta
* * * * * myjob.sh >> /var/log/myjob.log 2>&1
registrerà tutto l'output dal lavoro cron per /var/log/myjob.log
Si potrebbe utilizzare mail
per inviare messaggi di posta elettronica. La maggior parte dei sistemi invierà l'output del lavoro non gestito cron
tramite email a root o all'utente corrispondente.
Per i registri di default cron in/var/log/syslog in modo da poter vedere le voci relative cron utilizzando:
grep CRON /var/log/syslog
https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log
Ecco il mio codice:
* * * * * your_script_fullpath >> your_log_path 2>&1
" >> "significa aggiungere dati al fileright? che cosa significa "2> & 1", output completo con errore, giusto? – Nullpointer
Le domande di reindirizzamento di base sono meglio controllate nel manuale. C'è anche una metrica di domande duplicate su questi operatori qui su Stack Overflow. Ma sì, grosso modo; '>>' aggiunge e '2> & 1' dice di inviare errore standard nello stesso posto dell'output standard. – tripleee
Ci sono almeno tre diversi tipi di registrazione:
La registrazione PRIMA del programma viene eseguita, che registra SE solo il cronjob TRIED per eseguire il comando. Quella si trova in /var/log/syslog, come già menzionato da @Matthew Lock.
La registrazione degli errori DOPO che il programma ha tentato di eseguire, che può essere inviato a un'e-mail o in un file, come indicato da @Spliffster. Io preferisco registrare in un file, perché con e-mail ALLORA hai una NUOVA fonte di problemi e controlla che l'invio e la ricezione delle email funzionino perfettamente con . A volte lo è, a volte non lo è. Per esempio, in una semplice macchina CDE in cui non si è interessati a configurazione di uno smtp, a volte si preferisce registrazione in un file:
* * * * COMMAND_ABSOLUTE_PATH > /ABSOLUTE_PATH_TO_LOG 2>&1
- Vorrei anche prendere in considerazione il controllo dei permessi di/ABSOLUTE_PATH_TO_LOG ed esegui il comando dalle autorizzazioni dell'utente. Solo per la verifica, mentre verifichi se potrebbe essere una potenziale fonte di problemi.
- La registrazione del programma stesso, con la sua gestione degli errori e la registrazione per scopi di monitoraggio.
Esistono alcune fonti comuni di problemi con cronjob: * Il PERCORSO ASSOLUTO del file binario da eseguire. Quando lo si esegue dalla shell , potrebbe funzionare, ma il processo cron sembra utilizzare un altro ambiente e, quindi, non trova sempre i file binari se non si utilizza il percorso assoluto per . * Le LIBRERIE utilizzate da un binario. È più o meno lo stesso punto precedente, ma assicurati che, se si inserisce semplicemente il NOME del comando, si riferisca esattamente al binario che usa la stessa libreria, o meglio, controlla se il binario ti sta riferendo con il percorso assoluto è lo stesso che si riferisce quando si utilizza direttamente la console.I binari possono essere trovati utilizzando il comando locate, per esempio:
$locate python
essere sicuri che il binario si farà riferimento, è lo stesso binario si sta chiamando nella shell, o semplicemente testare di nuovo nella shell utilizzando il percorso assoluto che intendi inserire nel cronjob.
- Un'altra causa comune di problemi è la sintassi nel cronjob. Ricordate che ci sono caratteri speciali che è possibile utilizzare per liste (virgole), per definire gamme (trattini -), per definire incremento di gamme (slash), ecc Date un'occhiata: http://www.softpanorama.org/Utilities/cron.shtml
Incase sei eseguendo qualche comando con sudo, non lo permetterà. Sudo ha bisogno di un tty.
Ciò dipende anche dalla configurazione 'sudo'. Le cose che devono essere eseguite senza un modo per fornire una password dovrebbero essere configurate con 'NOPASSWD:' nella configurazione 'sudoers'. – tripleee
Su Ubuntu è possibile abilitare un file cron.log
per contenere solo le voci CRON.
Rimuovere il commento dalla linea che menziona cron
in /etc/rsyslog.d/50-default.conf
di file:
# Default rules for rsyslog.
#
# For more information see rsyslog.conf(5) and /etc/rsyslog.conf
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
Salvare e chiudere il file e quindi riavviare il servizio rsyslog
:
sudo systemctl restart rsyslog
Ora è possibile visualizzare le voci del registro di cron nella propria file:
sudo tail -f /var/log/cron.log
Uscite campione:
Jul 18 07:05:01 machine-host-name CRON[13638]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Tuttavia, non sarà possibile visualizzare ulteriori informazioni su ciò che gli script sono stati effettivamente eseguito all'interno /etc/cron.daily
o /etc/cron.hourly
, a meno che questi script uscita diretta alla cron.log (o forse per qualche altro file di log).
Se si desidera verificare se un crontab è in esecuzione e non devono cercarlo nella cron.log
o syslog
, creare un crontab che reindirizza l'output in un file di log della vostra scelta - qualcosa come:
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log 2>&1
Passi da: https://www.cyberciti.biz/faq/howto-create-cron-log-file-to-log-crontab-logs-in-ubuntu-linux/
Ubuntu 16.04 non ha mostrato alcun registro cron e questa informazione ha fatto il trucco. – pojda
Tutto ciò non funziona per me. Quindi, devo aggiungere "MAILTO = [mia e-mail]" nella parte superiore del file di crontab su /etc/cron.d/ e ho ottenuto la risposta perché il mio comando cron ha avuto degli errori.
cron
invia già l'output standard e l'errore standard di ogni lavoro eseguito per posta al proprietario del processo cron.
È possibile utilizzare MAILTO=recipient
nel file crontab
per inviare le e-mail a un altro account.
Perché funzioni, è necessario che la posta funzioni correttamente. Il recapito a una casella di posta locale non è di solito un problema (infatti, è probabile che lo ls -l "$MAIL"
rivelerà che ne hai già ricevuto alcuni) ma scaricarlo da Internet e da Internet richiede il MTA (Postfix, Sendmail, cos'hai) per essere correttamente configurato per connettersi al mondo.
- 1. Cron Job in symfony2
- 2. Cron Job $ _SERVER issue
- 3. Reindirizzare l'output di un job cron
- 4. Come eseguire un job Cron per Node.js
- 5. come impostare cron job per reindex
- 6. Come eliminare un cron job con Ansible?
- 7. Come reindirizzare l'output cron job allo stdout
- 8. Come impostare un cron job con codeigniter
- 9. Come impostare il cron job su CentOS
- 10. Come aggiungere un cron job in linux
- 11. Come posso eseguire un cron job con argomenti e passare i risultati a un log?
- 12. Esegui cron job ogni 45 minuti con Node-Cron
- 13. Cron job non può caricare gemma
- 14. Linux: Esegui cron job in primo piano
- 15. job cron non emette a nohup.out
- 16. magento cron job e cron_scheduler table
- 17. cron job che non verrà mai eseguito
- 18. Aggiunta dell'ora al cron job mysqldump?
- 19. Creazione di un cron job per mysqldump
- 20. php cron job ogni 10 minuti
- 21. cron job minuto prima di domani
- 22. Come testare un cron job in Local Server come WAMP?
- 23. Come posso far funzionare un cron job ogni 30 minuti?
- 24. Come fare un cron job ogni 72 minuti
- 25. Esecuzione di script php come cron job - problemi di timeout?
- 26. Come impostare cron job per bisettimanale (due volte a settimana)
- 27. Come eseguire un cron job ogni lunedì, mercoledì e venerdì?
- 28. Come impostare un job cron tramite PHP (non CPanel)?
- 29. Diagramma sequenza UML: come faccio a disegnare cron job?
- 30. Come eseguire un cron job in Heroku, con un'app Sinatra
Descrizione di cosa significa '2> & 1': http://stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21 – Yamaneko
quale potrebbe essere il problema se questo file di registro non viene mai creato ? – clamp
FWIW, Se si desidera sia 'stderr' che' stdout' nel log, il '2> & 1' deve venire dopo l'indirezione indiretta:' myjob.sh >> /var/log/myjob.log 2> & 1' –