Files
mkdocs/docs/Linux/cron.md
2025-03-25 15:52:48 +01:00

80 lines
2.8 KiB
Markdown

# cron
```bash
* * * * * command(s)
^ ^ ^ ^ ^
| | | | | allowed values
| | | | | -------
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
```
https://crontab.guru
| | | |
| -------- | -------------------- | ----------------------------------------------- |
| @yearly | 0 0 1 1 * | Tous les 1er janvier à midi |
| @monthly | 0 0 1 * * | Tous les 1er du mois à minuit |
| @weekly | 0 0 * * 0 | Tous les dimanches à minuit |
| @daily | 0 0 * * * | Tous les jours à minuit |
| @hourly | 0 * * * * | Toutes les heures |
| @reboot | | Au démarrage de l'ordinateur |
| | 0 15 * * 1-5 command | Tous les jours à 15h du lundi au vendredi |
| | 00 08-16 * * * | Toutes les jours, toutes les heures de 8h à 16h |
| | 0 7 1-7 * 1 | Le 1er lundi de chaque mois à 7h |
| | 15 9 1,15 * * | Le 1er et le 15 du mois à 9h15 |
| | */15 * * * * | Toutes les 15 mn |
#### La commande crontab:
- `crontab -e`: édite ou crée le fichier crontab.
- `crontab -l`: affiche le fichier crontab.
- `crontab -r`: supprime le fichier crontab (directement).
- `crontab -i`: supprime le fichier crontab (prompt).
- `crontab -u <user> `: édite le fichier crontab d'un autre utilisateur.
Le fichier crontab s'ouvre dans l'éditeur spécifié par la variable d'environnement EDITOR (ou VISUAL).
https://linuxize.com/post/scheduling-cron-jobs-with-crontab/
#### Voir si le cron est exécuté:
On ouvre la crontab avec `# crontab -e`:
```bash
# On redirige la sortie et les erreurs du scripts vers les logs avec 2>&1 | logger -t up_pihole
# Ici le cron est exécuté toutes les 2 minutes.
*/2 * * * * bash /root/update_pihole.sh 2>&1 | logger -t up_pihole
```
On cherche les sorties du cron dans les logs:
```bash
# journalctl -f | grep 'up_pihole\|cron'
```
```bash
Aug 25 16:40:01 PiHole1 CRON[438003]: (root) CMD (/usr/bin/env > /root/cron-env)
Aug 25 16:40:01 PiHole1 CRON[438004]: (root) CMD (bash /root/update_pihole.sh 2>&1 | logger -t up_pihole)
Aug 25 16:40:01 PiHole1 CRON[438001]: pam_unix(cron:session): session closed for user root
Aug 25 16:40:02 PiHole1 up_pihole[438007]: Find Pi-hole update on PiHole1
Aug 25 16:40:02 PiHole1 up_pihole[438007]:
Aug 25 16:40:02 PiHole1 up_pihole[438007]: Pi-hole Current Last
Aug 25 16:40:02 PiHole1 up_pihole[438007]: Pi-hole v5.18.3 v5.18.3
```