Lo script di cron non è in esecuzione su Mavericks

11

Ho configurato un file crontab utente come segue:

*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh

Ma non verrà eseguito. Ho aspettato, tipo, 10-15 minuti. Perché?

Comando auto-update.sh viene eseguito facilmente se eseguito manualmente. Come posso spezzare la catena di esecuzione e far partire il mio script da cron?

    
posta RomaValcer 09.01.2014 - 17:05
fonte

5 risposte

16

L'ambiente in cui viene eseguito un cron job è abbastanza diverso da una shell interattiva; è probabile che lo script sia in esecuzione, ma non con successo. Una delle maggiori differenze è che per i lavori cron, il PATH predefinito è solo "/ usr / bin: / bin", quindi se si usano comandi che non sono in / usr / bin o / bin, non saranno trovato a meno che il tuo script non imposti il suo PATH o fornisca percorsi espliciti ai comandi. L'altra grande differenza è semplicemente che non è connesso a una sessione interattiva, quindi se tenta di fare qualcosa di interattivo (letto dal terminale, ecc.) Fallirà. Prova a modificare la voce cron in:

*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh >>/tmp/auto-update.log 2>&1

... e vedi se qualcosa di informativo appare nel registro.

    
risposta data 10.01.2014 - 00:12
fonte
4

È difficile dirlo, ma cosa succede se hai aggiunto un secondo cron job da eseguire ogni 5 minuti circa e chiedigli di chiamare qualche strumento di sistema che registri i messaggi su system.log?

0,5,10,15,20 * * * * /usr/bin/logger "cron is working"

In questo modo saprai che cron è in esecuzione per l'utente in questione e può concentrarsi sia sull'avvio di cron che sulla correzione dello script in modo che venga eseguito nell'ambiente cron limitato. (Puoi guardare l'orologio da parete e scegliere un paio di volte che arriveranno presto o anche i prossimi minuti - es. Modifica alle 12:34 inserita in 35,36,37,38 per l'esecuzione dei minuti e salvataggio del file cron .)

    
risposta data 09.01.2014 - 18:53
fonte
4

È passato un po 'di tempo che hai fatto questa domanda, ma sembra che nessuna soluzione sia arrivata in questa discussione.

A seconda del modo in cui crei un crontab utente, potrebbe essere necessario eseguirlo dopo averlo modificato:

crontab ~/.yourcrontabfile

Per vedere se il nuovo crontab (anche dopo averlo modificato) è stato attivato, controlla con:

crontab -l
    
risposta data 13.01.2015 - 08:10
fonte
1

Ho avuto lo stesso problema. Devi aggiungere il percorso al tuo script di bash:

#!/bin/sh
PATH=/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin
    
risposta data 30.08.2015 - 05:24
fonte
0

Ho avuto lo stesso problema. È andato via dopo che ho aggiunto una nuova riga dopo il mio lavoro nel mio file crontab (sono un totale crontab n00b, quindi non ho idea se questo comportamento è ampiamente noto o meno).

    
risposta data 13.10.2016 - 17:57
fonte

Leggi altre domande sui tag