Introduction
Bah on va voir ce que c'est les cronjobs et comment en ajouter ducoup mdr
Définiton
Le terme Cronjobs n'est pas spécifique à Linux c'est un terme utilisé pour l'automatisation de tâche à intervalle régulier. En gros quand tu crée un cronjob tu fais une tâche (Exécuter un programme, Générer une notification, etc...) qui va se répéter sur un intervalle de temps défini
Les cronjobs sur Linux sont ajoutés à la crontab et sont exécutés par le service système cron.
Gestion de Cron
1. Fichier Crontab de l'utilisateur
Chaque utilisateur peut définir ses propres tâches cron dans un fichier dédié, accessible via la commande :
crontab -e # e pour edit
Ce fichier est généralement stocké à l'emplacement :
/var/spool/cron/crontabs/<nom_utilisateur> # Sur Debian, Ubuntu
/var/spool/cron/<nom_utilisateur> # Sur RedHat, CentOS
2. Fichiers Crontab globaux
Les administrateurs système peuvent définir des tâches planifiées au niveau global dans les fichiers suivants :
/etc/crontab
: Contient des tâches système et permet de spécifier un utilisateur pour chaque tâche./etc/cron.d/
: Contient des fichiers de configuration cron spécifiques à certaines applications ou services.
3. Répertoires spécifiques pour les tâches automatiques
De nombreux systèmes Linux utilisent les répertoires suivants pour exécuter des scripts à des fréquences prédéfinies :
/etc/cron.hourly/
→ Exécution toutes les heures/etc/cron.daily/
→ Exécution une fois par jour/etc/cron.weekly/
→ Exécution une fois par semaine/etc/cron.monthly/
→ Exécution une fois par mois
Le Service Cron
Pour vérifier si le service cron est actif :
systemctl status cron # Sur Debian, Ubuntu
systemctl status crond # Sur RedHat, CentOS
5. Les Logs des cronjobs
Les logs des tâches cron sont souvent stockés dans :
/var/log/syslog
(Debian, Ubuntu) → Recherche avecgrep CRON /var/log/syslog
/var/log/cron
(RedHat, CentOS) → Recherche avecgrep CRON /var/log/cron
Cela permet de vérifier si une tâche cron a bien été exécutée.
Création de Cronjobs
On va le faire sur Debian.
Comment Écrire un Cronjob
* * * * *
│ │ │ │ │
│ │ │ │ └─ Jour de la semaine (0-7, 0 et 7 = dimanche)
│ │ │ └─── Mois (1-12)
│ │ └───── Jour du mois (1-31)
│ └─────── Heure (0-23)
└───────── Minute (0-59)
Ca se scinde en 3 Parties :
-
-
-
-
-
- : Chaque étoiles correspond à une unité de temps allant de Minute à Années
-
-
-
-
- /path/to/executer : Le programme qui va exécuter le script tout les x temps, (Exemple : /usr/bin/python)
- /path/to/executable : Le script qui va être exécuté tout les x temps par l'éxécutant (Exemple : /home/username/script.py)
Exemples de cronjobs :
- Exécuter un script toutes les 5 minutes
*/5 * * * * /chemin/vers/script.sh
- Exécuter un script toutes les heures
0 * * * * /chemin/vers/script.sh
- Exécuter un script tous les 2 jours
0 0 */2 * * /chemin/vers/script.sh
- Exécuter un script une fois par mois
0 0 1 * * /chemin/vers/script.sh
Exécuter un script Python toutes les 5 Minutes
Voici un script Python pour logger l'utilisation du CPU & RAM, créez le dans /home/username/mescouilles.py:
import psutil
import datetime
LOG_FILE = "/var/log/system_monitor.log"
def log_system_usage():
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
cpu_usage = psutil.cpu_percent(interval=1)
memory_info = psutil.virtual_memory()
log_entry = f"[{timestamp}] CPU: {cpu_usage}% | RAM: {memory_info.percent}%\n"
with open(LOG_FILE, "a") as log_file:
log_file.write(log_entry)
if __name__ == "__main__":
log_system_usage()
Notre script étant fait, on peut automatiser le logging grâce à un cronjob :
*/5 * * * * /usr/bin/python /path /home/username/mescouilles.py
Et voilà c'est terminé y'avais rien de compliqué hein
Créer une Notification à 10h du Matin tous les jours
Debian possède un large panel de programme développé par des tiers et l'un d'entre eux est Zenity qui est plutôt cool pour l'affichage des notifications.
Installez le sudo apt update && sudo apt install zenity
Puis définissez votre nouveau cronjob (plus complexe celui-ci):
0 10 * * * DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus zenity --notification --text="T'es qu'une merde Jhonny"
- DISPLAY=:0 est utilisé pour définir l'écran sur lequel afficher la notification
- DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus permet d'envoyer la notification à l'utilisateur actif (toi ducoup).
- zenity --notification --text="T'es qu'une merde Jhonny"* est le programme a exécuter (pas besoin de spécifier le chemin complet ici parceque zenity est dans le PATH dès son installation)
Conclusion
Voilà vous savez un peu tout sur les cronjobs linux désormais bravo d'avoir lu jusqu'ici.
Si certains d'entre vous ont du savoir à transmettre et souhaitent le monnayer (ou non psk vous êtes cool) vous pouvez le faire savoir dans le Formulaire De Demande Formateur.