# Planifier des tâches cron sur votre serveur

> Exécutez des commandes à heures fixes avec cron : choisissez une fréquence ou une expression cron, lancez une tâche tout de suite et lisez son log.

La page **Planificateur** d'un serveur gère ses tâches planifiées : des commandes que cron exécute à heures fixes, comme chaque minute, chaque nuit ou le premier du mois. Utilisez-la pour le planificateur Laravel, des scripts de nettoyage, des rapports ou tout ce qui doit s'exécuter selon un calendrier puis se terminer.

Chaque tâche est écrite dans son propre fichier dans `/etc/cron.d` sur le serveur : les tâches peuvent donc être ajoutées et supprimées indépendamment, sans toucher à la crontab de quiconque. Les planifications suivent le fuseau horaire du serveur, affiché en haut de la page et modifiable dans les [paramètres du serveur](https://ops.vimonto.com/docs/fr/servers/server-settings).

![La page Planificateur avec les tâches par défaut et une tâche du planificateur Laravel chaque minute](https://ops.vimonto.com/docs-media/fr/server-scheduler.webp?v=161e760d "Tâches planifiées d'un serveur")

## Planifier une tâche

1. Ouvrez le serveur et choisissez **Planificateur** dans la barre latérale.
2. Cliquez sur **Planifier une tâche**.
3. Saisissez la **Commande**, par exemple `php /home/vimonto/example.com/current/artisan schedule:run`.
4. Saisissez éventuellement un **Nom**, pour reconnaître la tâche dans la liste.
5. Choisissez sous quel utilisateur elle s'exécute dans **Exécuter en tant que** : l'utilisateur système (`vimonto` par défaut) ou `root`.
6. Choisissez **Quand** elle s'exécute (voir ci-dessous).
7. Cliquez sur **Planifier une tâche**.

La tâche affiche **Ajout** jusqu'à ce que son fichier cron soit écrit, puis elle s'exécute à sa prochaine heure prévue.

La commande s'exécute via bash : les pipes, `&&` et les variables fonctionnent tels que vous les saisissez. Les caractères spéciaux propres à cron, comme `%`, n'ont pas besoin d'être échappés.

## Quelles fréquences pouvez-vous choisir ?

| Fréquence | Expression cron | Exécution |
| --- | --- | --- |
| **Chaque minute** | `* * * * *` | Chaque minute. |
| **Toutes les heures** | `0 * * * *` | Au début de chaque heure. |
| **Chaque nuit** | `0 0 * * *` | Chaque jour à minuit. |
| **Hebdomadaire** | `0 0 * * 0` | Chaque dimanche à minuit. |
| **Mensuel** | `0 0 1 * *` | Le premier de chaque mois à minuit. |
| **Au redémarrage** | `@reboot` | Une fois, à chaque démarrage du serveur. |
| **Planification personnalisée** | la vôtre | Ce que vous saisissez sous **Planification**. |

### Écrire une expression cron personnalisée

Choisissez **Planification personnalisée** et saisissez cinq champs sous **Planification** : minute, heure, jour du mois, mois et jour de la semaine. Chaque champ accepte `*`, un nombre, une plage (`1-5`), un pas (`*/15`) et des listes séparées par des virgules.

| Expression | Exécution |
| --- | --- |
| `*/15 * * * *` | Toutes les 15 minutes. |
| `30 3 * * *` | Chaque nuit à 3 h 30. |
| `0 9 * * 1-5` | À 9 h en semaine. |
| `0 */6 * * *` | Toutes les six heures. |
| `0 2 1,15 * *` | À 2 h le 1er et le 15 du mois. |

Les noms comme `MON` ou `JAN` et les raccourcis comme `@daily` ne sont pas acceptés dans une planification personnalisée ; utilisez des nombres.

## Faire tourner le planificateur Laravel

Le planificateur de Laravel a besoin d'une tâche cron qui exécute `schedule:run` chaque minute. Le plus simple est d'activer le planificateur pour le site sur sa page [files d'attente et planificateur](https://ops.vimonto.com/docs/fr/sites/queues-and-scheduler) : Vimonto Deploy crée alors la tâche pour vous, avec le bon chemin et le bon utilisateur, et elle apparaît dans cette liste.

Pour l'ajouter à la main, planifiez cette commande **Chaque minute** sous l'utilisateur système :

```bash
php /home/vimonto/example.com/current/artisan schedule:run
```

Utilisez le répertoire `current` du site pour que la tâche exécute toujours le code en ligne. Une tâche créée ainsi par le site porte le badge **Via Planificateur** ; voir [Tâches des fonctionnalités de site](#taches-des-fonctionnalites-de-site).

## Exécuter une tâche immédiatement

Ouvrez le menu d'actions (**⋯**) d'une tâche et choisissez **Exécuter maintenant**. La commande s'exécute immédiatement sous l'utilisateur de la tâche, depuis son répertoire personnel. Sa sortie apparaît dans la tâche sur la page [Activité](https://ops.vimonto.com/docs/fr/organization/activity) : c'est le moyen le plus simple de tester une nouvelle tâche.

## Lire le log

Cliquez sur **Log** à côté d'une tâche pour voir les 300 dernières lignes affichées par ses exécutions planifiées (sortie standard et erreurs ensemble), récupérées sur le serveur au moment du clic. Chaque exécution ajoute sa sortie à `/var/log/vimonto/cron-{id}.log`, sous une ligne indiquant la date et l'heure de son démarrage, par exemple `--- 2026-10-07T03:30:00+02:00`. Une tâche qui n'affiche rien ne laisse que cette ligne : vous voyez quand même qu'elle a tourné.

Une fois par jour, un log de plus de 5 Mo est mis de côté : un fichier plus ancien est conservé et tout ce qui est plus ancien est supprimé, pour qu'une tâche bavarde ne puisse pas remplir le disque. Le log est supprimé quand vous supprimez la tâche. La sortie de **Exécuter maintenant** n'est pas écrite dans le log ; elle se trouve dans la tâche sur la page Activité.


## Quelles sont les tâches par défaut ?

Chaque serveur est provisionné avec deux tâches, marquées **Par défaut** :

| Tâche | Quand | Ce qu'elle fait |
| --- | --- | --- |
| Mettre à jour Composer | **Chaque nuit** | Met à jour Composer vers sa dernière version. |
| Nettoyer les paquets inutilisés | **Hebdomadaire** | Supprime les paquets et les fichiers de paquets en cache dont le serveur n'a plus besoin. |

Les deux s'exécutent en `root`. Vous pouvez les modifier, les exécuter ou les supprimer comme n'importe quelle autre tâche.

## Modifier ou supprimer une tâche

Ouvrez le menu d'actions (**⋯**) et choisissez **Modifier** pour changer la commande, le nom, l'utilisateur ou la planification ; **Enregistrer** réécrit le fichier cron. Choisissez **Supprimer** pour supprimer la tâche ; elle ne s'exécutera plus.

Si l'écriture d'une tâche échoue, elle affiche **Échoué** ; choisissez **Réessayer** dans le menu d'actions.

### Tâches des fonctionnalités de site

Les tâches créées par une [fonctionnalité de site](https://ops.vimonto.com/docs/fr/sites/site-features), comme le planificateur Laravel ou **Vrai cron** pour WordPress, portent un badge **Via …**, par exemple **Via Planificateur**. Vous pouvez lire leur **Log** et les **Exécuter maintenant** ici, mais **Modifier**, **Réessayer** et **Supprimer** ne sont pas proposés : modifiez-les via la fonctionnalité dans l'en-tête du site, et désactivez la fonctionnalité pour supprimer sa tâche.

## Savoir quand une tâche planifiée cesse de tourner

Cron ne vous prévient pas quand une tâche échoue ou cesse de tourner. Utilisez pour cela un heartbeat : cliquez sur **Ajouter un heartbeat** sur la page [monitoring](https://ops.vimonto.com/docs/fr/servers/monitoring), puis faites appeler l'URL du heartbeat par la tâche quand elle se termine, par exemple en terminant la commande par `&& curl -fsS https://…` (l'URL affichée pour le heartbeat). Si le ping n'arrive pas dans l'intervalle et le délai de grâce définis, Vimonto Deploy envoie un e-mail à l'adresse sous **Notifier** et notifie les membres de l'organisation, avec un seul e-mail par personne ; voir [qui est notifié](https://ops.vimonto.com/docs/fr/servers/monitoring#qui-est-notifié-).

## Questions fréquentes

### Dans quel fuseau horaire les tâches s'exécutent-elles ?

Dans le fuseau horaire du serveur, affiché en haut de la page **Planificateur**. Modifiez-le dans les [paramètres du serveur](https://ops.vimonto.com/docs/fr/servers/server-settings) ; les tâches suivent alors le nouveau fuseau horaire.

### Pourquoi ma tâche ne s'exécute-t-elle pas ?

Ouvrez son **Log** pour voir ce qu'ont affiché les dernières exécutions planifiées, ou cliquez sur **Exécuter maintenant** et lisez la sortie sur la page Activité. Les causes courantes sont un chemin relatif (utilisez des chemins complets, ou faites d'abord un `cd` dans le répertoire), une commande qui nécessite un autre utilisateur, ou une planification personnalisée qui ne correspond pas à ce que vous vouliez. Cron utilise un `PATH` court (`/usr/local/sbin`, `/usr/local/bin`, `/usr/sbin`, `/usr/bin`, `/sbin` et `/bin`).

### Quelle est la différence entre une tâche planifiée et un processus ?

Une tâche planifiée démarre à heures fixes et se termine une fois son travail fait. Un [processus](https://ops.vimonto.com/docs/fr/servers/processes) tourne en permanence et est relancé par Supervisor quand il s'arrête. Utilisez un processus pour les queue workers, et une tâche planifiée pour des tâches comme le planificateur Laravel.

### Une tâche peut-elle s'exécuter plus souvent que chaque minute ?

Non. Le plus petit intervalle de cron est d'une minute. Pour un travail qui doit tourner en continu, utilisez un [processus](https://ops.vimonto.com/docs/fr/servers/processes).
