Commande batch Linux

Linux 命令大全Référence des commandes 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 :

  1. Détection de charge: Le système surveille en continu la moyenne de charge.
  2. 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").
  3. Déclenchement automatique: Exécute les tâches dans la file d'attente lorsque la charge du système tombe en dessous du seuil.
  4. 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

  1. Saisissez la commande batch
  2. Saisissez la commande à exécuter (appuyez sur Ctrl+D pour terminer la saisie)

Exemple

$ batch
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

$ cat myscript.sh
#!/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

$ batch -f myscript.sh
tâche 6 à jeu. mars  2 14:05:00 2023

Exemple 3 : Affichage des tâches dans la file d'attente

Exemple

$ atq
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 :

  1. Modifiez le fichier de configuration (l'emplacement peut varier selon la distribution) :
sudo nano /etc/atd.conf
  1. Modifiez ou ajoutez la ou les ligne(s) suivante(s) :
OPTS="-l 1.5"  # 设置负载阈值为1.5
  1. Redémarrez le service atd :
sudo systemctl restart atd

Afficher la charge moyenne du système

Exemple

$ uptime
 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Service système: Assurez-vous que le service atd est en cours d'exécution (systemctl status atd)

Scénarios d'application pratiques

  1. 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.
  2. 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.
  3. Rapports planifiés: Générer des rapports d'utilisation du système quotidiens/hebdomadaires.
  4. Sauvegardes automatisées: Effectuer des opérations de sauvegarde lorsque le système est inactif.
  5. 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

batch &lt;&lt;EOF
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.


Linux 命令大全Référence des commandes Linux

Autres extensions