Expliquer une expression cron
Une expression cron condense en cinq champs le calendrier d’une tâche planifiée : minute, heure, jour, mois, jour de la semaine. Cet outil la traduit en une phrase claire — « tous les jours à 3 h 30 » — pour vérifier d’un coup d’œil qu’elle fait bien ce que vous croyez. La lecture se fait dans votre navigateur.
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Cinq champs, une grammaire piégeuse
Une expression comme « 30 3 * * 1 » se lit champ par champ : minute, heure, jour du mois, mois, jour de la semaine. L’étoile signifie « chaque ». Mais la syntaxe réserve des pièges — les intervalles avec la barre oblique, les listes avec la virgule, et surtout l’interaction entre jour du mois et jour de la semaine. L’outil déroule chaque champ en clair et lève ces ambiguïtés une à une.
Relire avant de mettre en production
Une planification mal comprise s’exécute trop souvent, ou jamais. Avant d’installer une tâche, traduire son expression en français permet de confirmer l’intention : est-ce vraiment « tous les lundis à 3 h 30 », ou par erreur « toutes les minutes » ? Cette relecture de quelques secondes évite des exécutions intempestives, une base sursollicitée ou, à l’inverse, une sauvegarde qui ne part jamais. Deux secondes de relecture épargnent souvent une nuit entière d’incident.
Le piège du jour de semaine et du jour du mois
Le point qui trompe le plus : quand les deux champs de jour sont renseignés, la plupart des crons exécutent la tâche si l’un OU l’autre correspond, pas seulement les deux ensemble. Une expression censée viser « le premier du mois, mais seulement si c’est un lundi » n’a donc pas l’effet attendu. Voir la traduction en clair révèle immédiatement ce genre de malentendu, avant qu’il ne cause un incident.
Lecture locale, sans envoi
L’expression que vous collez ne quitte pas votre navigateur : la traduction se calcule sur cette page, sans transmission. Pour intégrer l’explication de crons à un outil interne via l’API, chaque requête coûte $0.002, en dollars US ; l’usage manuel reste gratuit et sans limite. Le navigateur reste le canal principal ; l’API n’est qu’un complément pour documenter des dizaines d’expressions d’un coup.
Cas d’usage
Vérifier une tâche héritée
Nadia Benali reprend un serveur et découvre une expression cron obscure ; traduite en clair, elle comprend que la sauvegarde tourne chaque nuit à 2 h.
Éviter une erreur de fréquence
Avant de déployer, Thomas Rousseau fait traduire son expression et corrige à temps une étoile oubliée qui l’aurait fait s’exécuter chaque minute.
Documenter une planification
Le Studio Lumen SAS joint la phrase en français à côté de chaque expression cron dans sa documentation d’exploitation.
Questions fréquentes
Que signifient les cinq champs d’un cron ?
Dans l’ordre : minute, heure, jour du mois, mois, jour de la semaine. Une étoile veut dire « chaque valeur ». L’outil traduit l’ensemble en une phrase, ce qui dispense de décoder champ par champ.
Pourquoi ma tâche s’exécute-t-elle trop souvent ?
Souvent à cause d’un champ laissé à l’étoile là où une valeur précise était attendue, ou d’un intervalle mal placé. Traduire l’expression en clair fait apparaître aussitôt la fréquence réelle.
Que se passe-t-il si je renseigne le jour du mois et le jour de la semaine ?
La plupart des crons exécutent la tâche si l’un OU l’autre correspond, pas seulement les deux à la fois. C’est une source classique d’erreurs, que la traduction en clair met en évidence.
Mon expression est-elle envoyée sur vos serveurs ?
Non. La traduction se fait dans votre navigateur, sans transmission ni conservation de ce que vous collez.
Est-ce payant ?
Non dans le navigateur : gratuit et illimité. Pour intégrer l’explication via l’API, le tarif est de $0.002 par requête, en dollars US.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/dev/cron-explain \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/cron-explain", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/cron-explain",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/cron-explain", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/cron-explain", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"items": [
"valor-1",
"valor-2"
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.cron_explain",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |