Commande batch Linux
batch est un outil en ligne de commande dans les systèmes Linux utilisé pour exécuter des tâches lorsque la charge système est faible. Il fait partie de la famille de commandes at, spécifiquement conçu pour exécuter automatiquement des tâches par lots lorsque le système est inactif.
Contrairement à la commande at, batch ne nécessite pas d'heure d'exécution spécifique ; à la place, le système décide quand exécuter les tâches en fonction des conditions de charge actuelles. Lorsque la moyenne de charge du système est inférieure à 0.8 (configurable), batch exécute automatiquement les tâches dans la file d'attente.
Comment fonctionne la commande batch
batch fonctionne selon les mécanismes suivants :
- Détection de charge: Le système surveille en continu la moyenne de charge.
- File d'attente de tâches: Place les tâches dans une file d'attente dédiée (généralement la file d'attente "batch").
- Déclenchement automatique: Exécute les tâches dans la file d'attente lorsque la charge du système tombe en dessous du seuil.
- Exécution séquentielle: Exécute les tâches séquentiellement selon le principe du premier entré, premier sorti (FIFO).
Syntaxe de base
Le format de syntaxe de base de la commande batch est :
batch [选项] [时间规格]
Options courantes
| Option | Description |
|---|---|
-f 文件 |
Lit les commandes à partir du fichier spécifié au lieu de l'entrée standard. |
-m |
Envoie un e-mail à l'utilisateur après la fin de la tâche. |
-q 队列 |
Spécifie une file d'attente particulière à utiliser (par défaut, la file d'attente batch). |
-v |
Affiche le temps d'exécution de la tâche. |
Format de spécification de l'heure
Bien que batch n'exige pas strictement de paramètre de temps, il accepte le même format de temps que la commande at :
HH:MM 特定时间(24小时制) midnight 午夜(00:00) noon 中午(12:00) teatime 下午茶时间(16:00) AM/PM 上午/下午标识 now + 时间 相对时间(如 now + 2 hours)
Exemples d’utilisation
Exemple 1 : Utilisation de base
- Saisissez la commande batch
- Saisissez la commande à exécuter (appuyez sur Ctrl+D pour terminer la saisie)
Exemple
at> echo "Ceci s'exécutera lorsque le système est inactif" >> ~/batch_test.log
at> date >> ~/batch_test.log
at> # Appuyez sur Ctrl+D
tâche 5 à jeu. mars 2 14:00:00 2023
Exemple 2 : Lecture des commandes depuis un fichier
Créez un fichier de script de tâche :
Exemple
#!/bin/bash
echo "Démarrage de la sauvegarde à $(date)" >> ~/backup.log
tar -czf ~/backup-$(date +%Y%m%d).tar.gz/Documents
echo "Sauvegarde terminée à $(date)" >> ~/backup.log
Soumettre la tâche :
Exemple
tâche 6 à jeu. mars 2 14:05:00 2023
Exemple 3 : Affichage des tâches dans la file d'attente
Exemple
5 jeu. mars 2 14:00:00 2023 a userid batch
6 jeu. mars 2 14:05:00 2023 a userid batch
Exemple 4 : Suppression des tâches dans la file d'attente
$ atrm 5 # 删除任务ID为5的任务
Configuration avancée
Modifier le seuil de charge
Par défaut, batch exécute les tâches lorsque la charge moyenne du système est inférieure à 0.8. Vous pouvez ajuster ce seuil en modifiant la configuration du service atd :
- Modifiez le fichier de configuration (l'emplacement peut varier selon la distribution) :
sudo nano /etc/atd.conf
- Modifiez ou ajoutez la ou les ligne(s) suivante(s) :
OPTS="-l 1.5" # 设置负载阈值为1.5
- Redémarrez le service atd :
sudo systemctl restart atd
Afficher la charge moyenne du système
Exemple
14:10:30 up 2 jours, 3:15, 3 utilisateurs, charge moyenne : 0.45, 0.60, 0.72
Les trois nombres représentent la charge moyenne du système sur la dernière minute, les 5 dernières minutes et les 15 dernières minutes, respectivement.
Précautions
- Contrôle des permissions: Par défaut, les fichiers /etc/at.allow et /etc/at.deny contrôlent quels utilisateurs peuvent utiliser la commande batch.
- Variables d'environnement: les tâches batch n'héritent pas de toutes les variables d'environnement du shell actuel ; définissez-les explicitement dans le script si nécessaire.
- Gestion de la sortie: La sortie standard et les erreurs des tâches sont envoyées à l'utilisateur par e-mail par défaut ; il est recommandé de les rediriger vers un fichier.
- Tâches de longue durée: batch ne convient pas aux tâches qui s'exécutent trop longtemps ; envisagez d'utiliser nohup ou tmux.
- Service système: Assurez-vous que le service atd est en cours d'exécution (
systemctl status atd)
Scénarios d'application pratiques
- Maintenance du système: Effectuer des tâches de maintenance telles que le nettoyage du disque et la rotation des journaux pendant les heures creuses.
- Tâches gourmandes en ressources: Tâches qui nécessitent beaucoup de ressources système, comme le traitement de données massives et la compilation de grands projets.
- Rapports planifiés: Générer des rapports d'utilisation du système quotidiens/hebdomadaires.
- Sauvegardes automatisées: Effectuer des opérations de sauvegarde lorsque le système est inactif.
- Tâches par lots: Traiter plusieurs tâches similaires dans la file d'attente.
Comparaison avec les commandes associées
| Commande | Temps d'exécution | Scénario d'application | Utilisation des ressources |
|---|---|---|---|
at |
Spécifier une heure précise | Tâches exécutées à une heure précise | Ne tient pas compte de la charge du système |
batch |
Lorsque le système est inactif | Tâches d'arrière-plan non urgentes | Utilise intelligemment les ressources inactives |
cron |
Planification périodique | Tâches qui se répètent périodiquement | Ne tient pas compte de la charge du système |
nohup |
Exécution immédiate | Tâches de longue durée | Consomme continuellement des ressources |
FAQ
Q1 : Comment consulter la sortie des tâches par lots ?
R : Par défaut, la sortie est envoyée par e-mail. Vous pouvez également la rediriger vers un fichier dans la commande :
batch < output.log 2>&1 EOF
Q2 : Pourquoi ma tâche par lots ne s'est-elle pas exécutée ?
R : Raisons possibles :
- La charge du système reste au-dessus du seuil
- Le service atd n'est pas en cours d'exécution
- La tâche a été annulée par un administrateur
- L'utilisateur n'a pas la permission d'utiliser batch
Q3 : Les tâches batch peuvent-elles accéder à l'interface graphique ?
R : Non. Les tâches batch s'exécutent dans un environnement non interactif et ne peuvent pas accéder à l'interface graphique ni aux périphériques d'affichage.
Q4 : Comment définir la priorité des tâches batch ?
R : Vous pouvez utiliser la commande nice pour ajuster la priorité :
Exemple
nice -n 10 commande
EOF
Résumé
La commande batch est un puissant outil de traitement par lots dans les systèmes Linux. Elle peut :
- Utiliser intelligemment les ressources système inactives
- Exécuter automatiquement des tâches pendant les périodes de faible charge
- Simplifier la gestion des tâches en arrière-plan
- Améliorer l'utilisation des ressources système
Maîtriser la commande batch peut aider les administrateurs système et les développeurs à gérer les ressources système plus efficacement, et elle est particulièrement adaptée à l'exécution de tâches de traitement en arrière-plan non urgentes.
Autres extensions
Référence des commandes Linux