Atualização: o rehmatworks atualizou o script original para resolver esse problema.
Graças aos comentários do @steeldriver acima, aprendi que o principal problema é:
- O crontab deve ser executado usando 'bash' (não o padrão 'sh'), porque:
-
&>/dev/null
é a sintaxe bash ('sh' seria>/dev/null 2>&1
). - sh não reconhece comandos entre aspas (produz 'não erro encontrado).
-
- O crontab deve definir as variáveis padrão do PATH.
- Se o crontab for executado sob o comando root, não será necessário usar o 'sudo' (embora provavelmente não atrapalhe).
Para editar o crontask da raiz, use sudo crontab -e -u root
. Final parece com isso:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
@monthly service nginx-sp stop && yes | letsencrypt --standalone renew &>/dev/null && service nginx-sp start && service nginx-sp reload
#
Até agora, parece que funciona (mas confirme analisando os registros).
Observação: não testado, mas em termos de correção do script de instalação original, sem ter que definir o ambiente do shell separadamente , é possível que você envolvesse o comando cron em um subshell bash para garantir que ele seja executado no bash ( per askubuntu SE answer ):
bash -c "bashcommand"