Il tuo messaggio di errore cron
viene inviato all'account mail
dell'utente che esegue il lavoro cron
.
Digitare mail
nella riga di comando per visualizzare i messaggi. Per un elenco di comandi mail
, consulta mail uomo .
Dovresti ricevere messaggi di errore con l'effetto di:
/bin/sh: -c: line 0: unexpected EOF while looking for matching '"'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Quanto a te comando e perché non funziona, è perché il segno "%" è un carattere "newline", il che significa che dice alla shell di "passare alla riga successiva". Quindi, dopo che incontra il primo "%", passa alla riga successiva e non vede mai il resto del comando. Ciò è confermato dall '"EOF inaspettato mentre si cerca la corrispondenza" "(virgolette doppie).
La pagina man locale per crontab ( man crontab
) è abbastanza scarsa di dettagli e sto speculando che è perché cron
è stato deprecato per launchd
1 . Tuttavia, la pagina di manuale di crontab da developer.apple.com lo spiega
The "sixth" field (the rest of the line) specifies the command to be
run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input. The command can optionally be prefixed by "@AppleNotOnBattery
" to tell cron not to run the command when functioning on battery power. For example, the "sixth" field when using this option would appear something like "@AppleNotOnBattery /usr/bin/touch /tmp/foo"
La tua correzione:
Quindi, quello che devi fare è "scappare" il carattere "%" con una barra rovesciata (\) in modo che gli dica di interpretarlo letteralmente.
Il tuo comando dovrebbe essere:
0/5 * * * * /bin/date "+\%Y-\%m-\%d \%H:\%M:\%S" >> /tmp/log.txt
1 Da man crontab
: (nota di Darwin: sebbene cron (8) e crontab (5) siano ufficialmente supportati da Darwin, la loro funzionalità è stata incorporata in launchd (8), che fornisce un modo più flessibile di eseguire automaticamente i comandi. Per ulteriori informazioni, vedere launchctl (1).