Estou tentando entender por que o cron está se recusando a trabalhar com um determinado arquivo crontab. A manpage para crontab diz:
cron requires that each entry in a crontab end in a newline character. If the last entry in a crontab is missing the newline, cron will consider the crontab (at least partially) broken and refuse to install it.
Dado o seguinte arquivo cron:
# managed by Fabric$ $ SHELL=/bin/sh$ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin$ $ # m h dom mon dow user command$ 17 * * * * root cd / && run-parts --report /etc/cron.hourly$ 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )$ 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )$ 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )$ $ # Postgres monitoring$ * * * * * postgres cd / && /etc/cron.d/pgup.sh$ */5 * * * * postgres cd / && /etc/cron.d/aws-scripts-mon/mon-put-instance-data.pl --mem-avail --disk-space-util --disk-path=/mnt$ $ # Postgres Backup$ 00 00 * * * postgres /etc/cron.d/pgbackup.sh$
Notando que o caractere "$" indica um caractere LF (formato vim unix).
E eu recebo o seguinte erro no syslog quando reinicio o cron:
Mar 31 17:34:02 postgres-primary0 cron[30852]: (system) ERROR (Missing newline before EOF, this crontab file will be ignored)
E adicionar uma linha em branco no final do arquivo cron resulta em nenhum erro ao reiniciar o cron.
Conclusão:
Até onde eu sei, a última entrada termina em um caractere de nova linha. Então parece que o crontab não está reconhecendo isso.
Isso é um bug? Talvez o que pretendia era que houvesse uma nova linha em sua própria linha no final do arquivo, caso em que a documentação é enganosa. Ou possivelmente eu não estou entendendo "newline" corretamente neste contexto ... Algum esclarecimento sobre este assunto será apreciado.