2 votes

accélérer l'exécution de launchctl

J'ai mis en place un certain nombre de scripts qui doivent se produire lorsque je connecte mon dock thunderbolt à la maison (désactiver le wifi, activer le bluetooth, ...).

Pour détecter la station d'accueil Thunderbolt, j'utilise les éléments suivants launchctl service :

<?xml version="1.0" encoding="UTF-8"?>                                                                   
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>romeovs.dock.agent</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/romeovs/.bin/dock/run.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>LaunchEvents</key>
    <dict>
        <key>com.apple.notifyd.matching</key>
        <dict>
            <key>com.apple.system.config.network_change</key>
            <dict>
                <key>Notification</key>
                <string>com.apple.system.config.network_change</string>
            </dict>
        </dict>
    </dict>
</dict>
</plist>

Ce service écoute launchd pour qu'un changement de réseau se produise (détection du réseau câblé connecté à la station d'accueil). Cette configuration semble fonctionner, mais elle est vraiment lente à détecter et à agir lorsque la station d'accueil est connectée.

Il faut déjà beaucoup de temps pour que le réseau de docks soit mis en place, mais après cela, il faut encore 5 secondes avant que le script ne soit effectivement appelé.

Existe-t-il un moyen de faire en sorte que le service détecte les changements de réseau plus rapidement (sans mettre en place un service d'interrogation) ?

1voto

Graham Miln Points 39606

Le retard se situe le plus souvent dans le centre de notification. notifyd Le service n'est pas critique en termes de temps.

Envisager l'utilisation d'un processus observant les notifications de niveau IOKit. Au niveau IOKit, les notifications sont envoyées immédiatement et sont conçues pour les processus réagissant aux changements matériels.

Essayer d'utiliser Grognement et le HardwareGrowler pour déclencher votre script.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X