Guide

Nouvelles mises à jour et améliorations de Roundfleet.

Avis important

Les exemples de code et scripts fournis dans ces tutoriels sont uniquement à des fins éducatives. Roundfleet n'est pas responsable des problèmes, dommages ou vulnérabilités de sécurité qui pourraient survenir lors de l'utilisation, modification ou implémentation de ces exemples. Toujours vérifier et tester le code dans un environnement sécurisé avant de l'utiliser dans des systèmes de production.

Gestion de Batterie d'Entreprise sur macOS

Surveillez et gérez la santé, les performances et le cycle de vie de la batterie sur vos appareils Roundfleet en utilisant des outils de surveillance de batterie avancés et des systèmes de gestion de batterie d'entreprise. Ce tutoriel couvre la surveillance de santé de batterie, l'optimisation d'alimentation, le suivi de conformité et la gestion du cycle de vie de batterie d'entreprise.

Comprendre la Gestion de Batterie macOS

macOS fournit plusieurs outils en ligne de commande pour la gestion et surveillance de batterie :

  • pmset - Paramètres de gestion d'alimentation et surveillance d'état de batterie
  • system_profiler - Informations système et batterie complètes
  • ioreg - Informations de registre I/O incluant détails de batterie
  • Gestion de Santé de Batterie - Optimisation de batterie intégrée macOS
  • Mode Économie d'Énergie - Conservation d'énergie au niveau système

Opérations de Batterie de Base

Voir l'État de la Batterie

#!/bin/bash

# État de batterie de base
pmset -g batt

echo "État de batterie récupéré avec succès"

Informations de Batterie Améliorées

#!/bin/bash

# Informations de batterie complètes avec analyse détaillée
get_comprehensive_battery_info() {
    echo "=== Analyse Complète de Batterie ==="
    
    # État de batterie de base
    echo "Aperçu de l'État de Batterie :"
    pmset -g batt
    
    echo -e "\nSanté Détaillée de Batterie :"
    system_profiler SPPowerDataType
    
    echo -e "\nParamètres de Gestion d'Alimentation :"
    pmset -g
    
    echo -e "\nInformations de Registre de Batterie :"
    ioreg -n AppleSmartBattery -r
    
    echo -e "\nÉtat Thermique :"
    pmset -g therm
    
    echo -e "\nDétails de Source d'Alimentation :"
    pmset -g ps
}

# Exécuter l'analyse complète
get_comprehensive_battery_info

Catégories de Gestion de Batterie

Classifications d'Appareils à Batterie

#!/bin/bash

# Catégories de gestion de batterie d'entreprise pour surveillance et application de politiques
declare -A BATTERY_DEVICE_CATEGORIES=(
    ["mobile_direction"]="MacBooks de direction nécessitant temps de fonctionnement et fiabilité maximums"
    ["poste_creatif"]="MacBooks haute performance pour professionnels créatifs avec usage intensif"
    ["ordinateur_developpeur"]="MacBooks de développement avec usage CPU élevé et sessions longues"
    ["service_terrain"]="MacBooks de service terrain nécessitant autonomie étendue et durabilité"
    ["flotte_education"]="MacBooks éducatifs avec modèles d'usage partagé et contraintes budgétaires"
    ["salle_conference"]="MacBooks de salle de réunion pour présentations et visioconférence"
    ["appareils_secours"]="Appareils de sauvegarde et prêt avec modèles d'usage peu fréquents"
    ["systemes_heritage"]="MacBooks anciens nécessitant gestion de batterie spécialisée"
    ["labo_test"]="Appareils de test et QA avec modèles d'usage variables"
    ["affichage_kiosque"]="MacBooks kiosque avec exigences d'opération continue"
)

# Seuils de santé de batterie
declare -A HEALTH_THRESHOLDS=(
    ["mobile_direction"]="excellent:90,bon:80,alerte:70,critique:60"
    ["poste_creatif"]="excellent:85,bon:75,alerte:65,critique:55"
    ["ordinateur_developpeur"]="excellent:85,bon:75,alerte:65,critique:55"
    ["service_terrain"]="excellent:95,bon:85,alerte:75,critique:65"
    ["flotte_education"]="excellent:80,bon:70,alerte:60,critique:50"
    ["salle_conference"]="excellent:85,bon:75,alerte:65,critique:55"
    ["appareils_secours"]="excellent:75,bon:65,alerte:55,critique:45"
    ["systemes_heritage"]="excellent:70,bon:60,alerte:50,critique:40"
    ["labo_test"]="excellent:80,bon:70,alerte:60,critique:50"
    ["affichage_kiosque"]="excellent:90,bon:80,alerte:70,critique:60"
)

print_battery_categories() {
    echo "=== Catégories de Gestion de Batterie ==="
    for category in "${!BATTERY_DEVICE_CATEGORIES[@]}"; do
        echo "Catégorie : $category"
        echo "  Description : ${BATTERY_DEVICE_CATEGORIES[$category]}"
        echo "  Seuils de Santé : ${HEALTH_THRESHOLDS[$category]}"
        echo ""
    done
}

# Afficher les catégories disponibles
print_battery_categories

Politiques de Gestion de Batterie

Moteur de Politique de Gestion d'Alimentation

#!/bin/bash

# Politiques de gestion de batterie pour différentes exigences organisationnelles
declare -A BATTERY_POLICIES=(
    ["performance_maximale"]="Politique priorité performance avec restrictions d'alimentation minimales"
    ["efficacite_equilibree"]="Optimisation équilibrée performance et autonomie batterie"
    ["autonomie_etendue"]="Autonomie maximale avec optimisation performance"
    ["entreprise_standard"]="Gestion batterie d'entreprise standard avec surveillance"
    ["mobile_haute_securite"]="Gestion batterie mobile axée sécurité"
    ["professionnel_creatif"]="Optimisé pour flux créatifs avec demandes d'alimentation élevées"
    ["operations_terrain"]="Opération étendue pour service terrain et travail distant"
    ["conformite_stricte"]="Conformité stricte avec suivi santé et cycle de vie batterie"
)

# Appliquer une politique de batterie
apply_battery_policy() {
    local policy="$1"
    local config_file="/tmp/politique_batterie.json"
    
    echo "Application de la politique de batterie : $policy"
    
    case "$policy" in
        "autonomie_etendue")
            cat > "$config_file" << EOF
{
    "mode_alimentation": "economie_etendue",
    "gestion_sante_batterie": true,
    "seuil_mode_economie": 20,
    "parametres_veille": {
        "veille_ecran": 5,
        "veille_systeme": 10,
        "veille_disque": 5
    },
    "performance_processeur": "efficace",
    "commutation_graphiques": "gpu_integre_seulement",
    "actualisation_apps_arriere_plan": false,
    "services_localisation": "essentiel_seulement",
    "optimisation_notification": true,
    "gestion_thermique": "priorite_batterie",
    "optimisation_charge": true,
    "charge_optimisee": true,
    "surveillance_batterie": "complete"
}
EOF
            ;;
        "entreprise_standard")
            cat > "$config_file" << EOF
{
    "mode_alimentation": "equilibre",
    "gestion_sante_batterie": true,
    "seuil_mode_economie": 15,
    "parametres_veille": {
        "veille_ecran": 15,
        "veille_systeme": 30,
        "veille_disque": 10
    },
    "performance_processeur": "equilibre",
    "commutation_graphiques": "automatique",
    "actualisation_apps_arriere_plan": true,
    "services_localisation": "standard",
    "optimisation_notification": true,
    "gestion_thermique": "equilibre",
    "optimisation_charge": true,
    "surveillance_batterie": "entreprise",
    "suivi_conformite": true,
    "gestion_cycle_vie": true,
    "analyse_usage": true,
    "alertes_sante": true,
    "rapports_flotte": true
}
EOF
            ;;
        *)
            echo "Politique de batterie inconnue : $policy"
            return 1
            ;;
    esac
    
    echo "✅ Politique de batterie appliquée avec succès"
    echo "Configuration : $config_file"
    
    return 0
}

Surveillance Avancée de Batterie

Analyse de Santé de Batterie

#!/bin/bash

# Surveillance et analyse complètes de santé de batterie
monitor_battery_health() {
    local device_category="$1"
    local monitoring_profile="${2:-standard}"
    local health_report="/tmp/sante_batterie_$(date +%Y%m%d_%H%M%S).json"
    
    echo "=== Surveillance de Santé de Batterie ==="
    echo "Catégorie d'Appareil : $device_category"
    echo "Profil de Surveillance : $monitoring_profile"
    
    # Extraire les informations de batterie
    echo "Collecte des données de batterie..."
    local battery_info
    battery_info=$(system_profiler SPPowerDataType)
    
    # Analyser les métriques clés de batterie
    local cycle_count
    cycle_count=$(echo "$battery_info" | grep "Cycle Count:" | awk -F': ' '{print $2}' | tr -d ' ')
    
    local condition
    condition=$(echo "$battery_info" | grep "Condition:" | awk -F': ' '{print $2}' | tr -d ' ')
    
    local max_capacity
    max_capacity=$(echo "$battery_info" | grep "Maximum Capacity:" | awk -F': ' '{print $2}' | tr -d ' %')
    
    local state_of_charge
    state_of_charge=$(echo "$battery_info" | grep "State of Charge" | awk -F': ' '{print $2}' | tr -d ' %')
    
    local charging_status
    charging_status=$(pmset -g batt | grep -o "charging\|discharging\|charged" | head -1)
    
    # Calculer le score de santé de batterie
    local health_score=100
    
    # Impact du nombre de cycles
    if [[ $cycle_count -gt 1000 ]]; then
        ((health_score -= 20))
    elif [[ $cycle_count -gt 500 ]]; then
        ((health_score -= 10))
    fi
    
    # Impact de la capacité
    if [[ $max_capacity -lt 80 ]]; then
        ((health_score -= 25))
    elif [[ $max_capacity -lt 90 ]]; then
        ((health_score -= 15))
    fi
    
    # Impact de la condition
    if [[ "$condition" == "Service Recommended" ]]; then
        ((health_score -= 30))
    elif [[ "$condition" == "Replace Soon" ]]; then
        ((health_score -= 50))
    elif [[ "$condition" == "Replace Now" ]]; then
        ((health_score -= 70))
    fi
    
    # Déterminer l'état de santé
    local health_status="excellent"
    if [[ $health_score -lt 60 ]]; then
        health_status="critique"
    elif [[ $health_score -lt 70 ]]; then
        health_status="mauvais"
    elif [[ $health_score -lt 80 ]]; then
        health_status="alerte"
    elif [[ $health_score -lt 90 ]]; then
        health_status="bon"
    fi
    
    # Générer les recommandations
    local recommendations=()
    
    if [[ $cycle_count -gt 800 ]]; then
        recommendations+=("Considérer la planification de remplacement de batterie")
    fi
    
    if [[ $max_capacity -lt 85 ]]; then
        recommendations+=("Surveiller la dégradation de capacité de batterie")
    fi
    
    if [[ "$condition" != "Normal" ]]; then
        recommendations+=("Programmer rendez-vous de service batterie")
    fi
    
    if [[ $state_of_charge -lt 20 && "$charging_status" == "discharging" ]]; then
        recommendations+=("Connecter à une source d'alimentation immédiatement")
    fi
    
    # Afficher les résultats
    echo ""
    echo "Résultats d'Analyse de Santé de Batterie :"
    echo "  Score de Santé Global : $health_score/100 ($health_status)"
    echo "  Nombre de Cycles : ${cycle_count:-0}"
    echo "  Condition : $condition"
    echo "  Capacité Maximale : ${max_capacity:-0}%"
    echo "  Charge Actuelle : ${state_of_charge:-0}%"
    echo "  État de Charge : $charging_status"
    
    if [[ ${#recommendations[@]} -gt 0 ]]; then
        echo "  Recommandations :"
        for rec in "${recommendations[@]}"; do
            echo "    - $rec"
        done
    else
        echo "  ✅ Aucune action immédiate requise"
    fi
    
    echo "  Rapport de Santé : $health_report"
    
    return 0
}

Système de Gestion de Batterie d'Entreprise

#!/bin/bash

# Système de Gestion de Batterie d'Entreprise Roundfleet
# Surveillance, optimisation et gestion de cycle de vie de batterie complètes

# Configuration
CONFIG_DIR="/etc/roundfleet/batterie"
LOG_FILE="/var/log/roundfleet_gestion_batterie.log"
DATA_DIR="/var/data/roundfleet/batterie"
REPORTS_DIR="/var/reports/roundfleet/batterie"
AUDIT_LOG="/var/log/roundfleet_audit_batterie.log"

# Fonctions de journalisation
log_action() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" | tee -a "$LOG_FILE"
}

log_error() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') [ERREUR] $1" | tee -a "$LOG_FILE" >&2
}

audit_log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') [AUDIT] $1" | tee -a "$AUDIT_LOG"
}

# Optimisation de performance de batterie
optimize_battery_performance() {
    local optimization_profile="$1"
    local target_usage="${2:-standard}"
    
    log_action "Début d'optimisation batterie (Profil : $optimization_profile)"
    
    echo "=== Optimisation de Performance de Batterie ==="
    echo "Profil d'Optimisation : $optimization_profile"
    echo "Usage Cible : $target_usage"
    
    local optimizations_applied=()
    
    case "$optimization_profile" in
        "autonomie_maximale")
            echo "Application des optimisations d'autonomie maximale..."
            
            # Activer le mode basse consommation
            sudo pmset -b lowpowermode 1 2>/dev/null && {
                optimizations_applied+=("mode_basse_consommation_active")
                echo "  ✅ Mode basse consommation activé"
            }
            
            # Optimiser les paramètres de veille pour batterie
            sudo pmset -b displaysleep 2 sleep 5 disksleep 3 && {
                optimizations_applied+=("parametres_veille_optimises")
                echo "  ✅ Paramètres de veille optimisés pour batterie"
            }
            
            # Désactiver les services non essentiels
            sudo pmset -b ttyskeepawake 0 && {
                optimizations_applied+=("veille_tty_optimisee")
                echo "  ✅ Optimisation de veille TTY activée"
            }
            ;;
            
        "performance_equilibree")
            echo "Application des optimisations de performance équilibrée..."
            
            # Optimiser les modèles de charge
            sudo pmset -b acwake 0 && {
                optimizations_applied+=("reveil_ac_optimise")
                echo "  ✅ Optimisation de réveil AC appliquée"
            }
            
            # Définir paramètres de veille équilibrés
            sudo pmset -b displaysleep 10 sleep 15 disksleep 10 && {
                optimizations_applied+=("parametres_veille_equilibres")
                echo "  ✅ Paramètres de veille équilibrés appliqués"
            }
            ;;
            
        "operations_terrain")
            echo "Application des optimisations d'opérations terrain..."
            
            # Paramètres d'alimentation ultra-conservateurs
            sudo pmset -b displaysleep 1 sleep 3 disksleep 1 && {
                optimizations_applied+=("veille_ultra_conservative")
                echo "  ✅ Paramètres de veille ultra-conservateurs pour usage terrain"
            }
            
            # Désactiver tous les événements de réveil
            sudo pmset -b wake 0 womp 0 && {
                optimizations_applied+=("evenements_reveil_desactives")
                echo "  ✅ Événements de réveil désactivés pour conservation maximale"
            }
            
            # Activer l'hibernation
            sudo pmset -b hibernatemode 25 && {
                optimizations_applied+=("hibernation_activee")
                echo "  ✅ Hibernation activée pour veille prolongée"
            }
            ;;
            
        *)
            echo "❌ Profil d'optimisation inconnu : $optimization_profile"
            return 1
            ;;
    esac
    
    echo ""
    echo "Résultats d'Optimisation :"
    echo "  Profil : $optimization_profile"
    echo "  Optimisations Appliquées : ${#optimizations_applied[@]}"
    
    audit_log "Optimisation batterie terminée : $optimization_profile (${#optimizations_applied[@]} optimisations)"
    
    return 0
}

# Surveillance de conformité de batterie
monitor_battery_compliance() {
    local compliance_framework="$1"
    
    log_action "Début surveillance conformité batterie : $compliance_framework"
    
    echo "=== Surveillance de Conformité de Batterie ==="
    echo "Cadre : $compliance_framework"
    
    local violations=()
    local compliance_score=100
    
    case "$compliance_framework" in
        "entreprise_standard")
            # Vérifier la gestion de santé de batterie
            if ! pmset -g | grep -q "Battery Health Management.*1"; then
                violations+=("gestion_sante_batterie_desactivee")
                ((compliance_score -= 20))
            fi
            
            # Vérifier la charge optimisée
            if ! pmset -g | grep -q "Optimized Battery Charging.*1"; then
                violations+=("charge_optimisee_desactivee")
                ((compliance_score -= 15))
            fi
            ;;
            
        "conformite_environnementale")
            # Vérifier la condition de batterie
            local condition
            condition=$(system_profiler SPPowerDataType | grep "Condition:" | awk -F': ' '{print $2}' | tr -d ' ')
            
            if [[ "$condition" != "Normal" ]]; then
                violations+=("condition_batterie_degradee")
                ((compliance_score -= 30))
            fi
            
            # Vérifier le nombre de cycles
            local cycle_count
            cycle_count=$(system_profiler SPPowerDataType | grep "Cycle Count:" | awk -F': ' '{print $2}' | tr -d ' ')
            
            if [[ $cycle_count -gt 1000 ]]; then
                violations+=("nombre_cycles_eleve_preoccupation_environnementale")
                ((compliance_score -= 25))
            fi
            ;;
            
        *)
            echo "❌ Cadre de conformité inconnu : $compliance_framework"
            return 1
            ;;
    esac
    
    echo ""
    echo "Résultats de Conformité :"
    echo "  Cadre : $compliance_framework"
    echo "  Score de Conformité : $compliance_score/100"
    echo "  Violations Trouvées : ${#violations[@]}"
    
    if [[ ${#violations[@]} -gt 0 ]]; then
        echo "  Violations :"
        for violation in "${violations[@]}"; do
            echo "    - $violation"
        done
    else
        echo "  ✅ Aucune violation trouvée"
    fi
    
    audit_log "Surveillance conformité batterie terminée : $compliance_framework (Score : $compliance_score/100)"
    
    return 0
}

# Fonction principale avec routage de commandes
main() {
    local command="$1"
    shift
    
    case "$command" in
        "statut")
            # État de batterie amélioré
            get_comprehensive_battery_info
            ;;
        "verification_sante")
            monitor_battery_health "$@"
            ;;
        "optimiser")
            optimize_battery_performance "$@"
            ;;
        "appliquer_politique")
            apply_battery_policy "$@"
            ;;
        "verification_conformite")
            monitor_battery_compliance "$@"
            ;;
        "afficher_categories")
            print_battery_categories
            ;;
        *)
            echo "Système de Gestion de Batterie d'Entreprise Roundfleet"
            echo "Utilisation : $0 <commande> [options]"
            echo ""
            echo "Commandes :"
            echo "  statut                                    - État et informations de batterie améliorés"
            echo "  verification_sante <categorie> [profil]  - Surveillance complète de santé de batterie"
            echo "  optimiser <profil> [usage]               - Optimisation de performance de batterie"
            echo "  appliquer_politique <politique>          - Appliquer politique de gestion de batterie"
            echo "  verification_conformite <cadre>          - Surveillance de conformité de batterie"
            echo "  afficher_categories                      - Afficher catégories d'appareils à batterie"
            echo ""
            echo "Exemples :"
            echo "  $0 statut"
            echo "  $0 verification_sante mobile_direction entreprise"
            echo "  $0 optimiser autonomie_maximale mobile"
            echo "  $0 appliquer_politique entreprise_standard"
            echo "  $0 verification_conformite entreprise_standard"
            ;;
    esac
}

# Exécuter la fonction principale avec tous les arguments
main "$@"

Considérations de Sécurité

Sécurité de Batterie

  • Intégrité de Gestion d'Alimentation - S'assurer que les paramètres de gestion d'alimentation ne peuvent pas être altérés
  • Surveillance de Santé de Batterie - Surveillance continue pour problèmes de batterie liés à la sécurité
  • Gestion Thermique - Surveiller la température de batterie pour sécurité et protection
  • Sécurité de Charge - Protocoles de charge sécurisés et protection contre logiciels malveillants
  • Sécurité Physique - Surveiller altération ou remplacement de batterie

Cadre de Conformité

  • Conformité Environnementale - Élimination et conformité de cycle de vie de batterie
  • Santé et Sécurité - Surveillance de sécurité de batterie et signalement d'incidents
  • Efficacité Énergétique - Suivi et optimisation de consommation d'énergie
  • Gestion d'Actifs - Suivi de remplacement et maintenance de batterie
  • Pistes d'Audit - Journalisation complète de toutes les opérations liées à la batterie

Guide de Dépannage

Problèmes Courants

Batterie Ne Se Charge Pas

  • Vérifier fonctionnalité du câble et adaptateur de charge
  • Vérifier port de charge pour débris ou dommages
  • Réinitialiser SMC (Contrôleur de Gestion Système)
  • Vérifier restrictions de charge basées sur logiciel

Décharge Rapide de Batterie

  • Identifier applications énergivores avec Moniteur d'Activité
  • Vérifier processus en fuite consommant CPU
  • Vérifier luminosité d'écran et autres paramètres d'alimentation
  • Surveiller actualisation d'apps en arrière-plan et services de localisation

Dégradation de Santé de Batterie

  • Surveiller tendances de nombre de cycles et capacité
  • Vérifier exposition à températures extrêmes
  • Vérifier modèles de charge et optimiser pour longévité
  • Considérer remplacement de batterie basé sur métriques de santé

Commandes de Diagnostic

# État complet de batterie
pmset -g batt

# Santé détaillée de batterie
system_profiler SPPowerDataType

# Paramètres de gestion d'alimentation
pmset -g

# Informations de registre de batterie
ioreg -n AppleSmartBattery -r

# Surveillance d'état thermique
pmset -g therm

Notes Importantes

  • Sécurité de Batterie - Surveiller température et modèles de charge pour sécurité
  • Gestion de Cycle de Vie - Surveillance proactive et planification de remplacement
  • Impact Environnemental - Procédures appropriées d'élimination et recyclage de batterie
  • Impact sur Performance - Équilibrer optimisation batterie avec besoins de performance système
  • Exigences de Conformité - Maintenir conformité avec standards environnementaux et de sécurité
  • Documentation - Conserver enregistrements détaillés de santé et activités de maintenance de batterie

Related Tutorials

Gestion des Limites de Charge de Batterie sur macOS

Apprenez à gérer et configurer les limites de charge de batterie sur les appareils macOS en utilisant bclm (Battery Charge Limit Max) pour l'optimisation de la santé de la batterie d'entreprise et les politiques de gestion d'énergie.

7 juil. 2025

Gestion Entreprise du Sommeil et de l'Alimentation pour macOS

Gérez les paramètres de sommeil et d'alimentation macOS sur les appareils Roundfleet avec des politiques d'alimentation automatisées, l'optimisation énergétique, la surveillance de conformité et la gestion complète de la flotte pour l'efficacité et la sécurité d'entreprise.

7 juil. 2025

Gestion Entreprise de l'Arrêt et du Redémarrage pour macOS

Gérez les opérations d'arrêt et de redémarrage macOS sur les appareils Roundfleet avec la planification automatisée de maintenance, les procédures d'arrêt en douceur, la validation de sécurité et la gestion complète de l'alimentation de la flotte pour les opérations d'entreprise.

7 juil. 2025

Gestion d'Entreprise des Redémarrages Programmés sur macOS

Guide complet pour programmer, gérer et surveiller les redémarrages système sur les flottes macOS avec politiques de planification avancées, notifications utilisateur, fenêtres de maintenance et rapports de conformité.

7 juil. 2025

Exécuter l'Assistant de configuration sur les appareils macOS au prochain redémarrage

Apprenez à déclencher l'Assistant de configuration macOS au prochain redémarrage pour la reconfiguration des appareils, l'intégration des utilisateurs et les scénarios de déploiement d'entreprise.

7 juil. 2025

Gérer les processus en cours d'exécution sur macOS

Apprenez à surveiller l'utilisation du CPU, l'état de la mémoire, afficher les processus en cours et terminer des processus sur les appareils macOS en utilisant des scripts en ligne de commande pour la gestion système.

7 juil. 2025

Gestion de Stockage d'Entreprise sur macOS

Surveillez l'utilisation du disque, implémentez les politiques de stockage et optimisez les performances de stockage sur les appareils macOS avec la gestion avancée de stockage, le nettoyage automatisé et l'analytique d'entreprise pour l'infrastructure de stockage organisationnelle.

7 juil. 2025

Gestion de l'indexation Spotlight sur les appareils macOS

Apprenez à contrôler l'indexation Spotlight sur les appareils macOS en utilisant des scripts shell pour optimiser les performances et gérer efficacement les ressources système.

7 juil. 2025