Dis comme ça, ça paraît simple.
Effectivement c'est très simple. Par exemple, pour relancer le service d'apache, il suffit d'ajouter la ligne suivante au cron :

  1. */1 * * * * /usr/bin/pgrep apache || /etc/init.d/apache2 start

Pour l'explication de la syntaxe, je vous laisse le soin de lire l'introduction à cron et le tutoriel de relance automatique des services.

Mais si ça avait été aussi simple dans mon cas, je n'aurais pas écrit ce message. J'ai été confronté à un problème qui m'a demandé pas mal de temps à résoudre.

Le problème était le suivant. J'avais un script de relance d'un service un peu plus complexe que celui décrit un peu plus haut. Le script fonctionnait parfaitement lancé manuellement avec l'utilisateur root. Par contre, il ne fonctionnait pas du tout quand il était lancé par cron (toujours en root).

Après de nombreux tests différents, j'ai identifié le problème. La variable PATH utilisée par cron ne contenait pas le chemin d'accès au programme appelé et ce même si l'utilisateur était le même.
Je ne sais pas si c'est dû à la configuration de Debian et d'Ubuntu [1], mais la configuration de cron [2] n'est pas prise en compte au moment de l'exécution des commandes. J'ai du ajouter manuellement le chemin d'accès dans le script.

Finalement, la solution était vraiment toute simple mais identifier le problème a été la partie la plus complexe.

Notes

[1] j'ai fait le test sur les 2 plate-formes

[2] dans le fichier /etc/crontab