Eu uso o supervisord para fazer isso. Cron está bem para iniciá-lo uma vez e mantê-lo em execução (use @reboot), mas você precisa de algo um pouco menos básico para ficar de olho nas coisas.
Meus arquivos de configuração são por aplicativo (e no ubuntu, algo como /etc/supervisord/conf.d/foo.conf)
Este é o meu arquivo de script de atualização do ttrss, mas é um bom ponto de partida.
command=php ./update_daemon2.php
directory=/var/www/lupinenet/ttrss
autostart=true
startretries=5
stderr_logfile=/var/log/supervisor/ttrss/ttrss.err.log
user=www-data
Linha por linha,
primeira linha é o comando que quero executar (coloque o comando que você deseja executar aqui)
O segundo é o diretório its in (o que o torna mais puro, no meu caso, é executado dentro da minha raiz do servidor web)
Ele irá iniciar automaticamente e tentar 5 vezes.
Eu quero a saída no caso de algo der errado, então eu defino um arquivo para stderr_logfile - isso é opcional, e defina o usuário que eu quero executar a tarefa como. Eu preciso logar isso, mas eu continuo esquecendo; p
Você pode ajustar isso conforme os documentos