acelerar la ejecución de launchctl

2

He configurado un montón de scripts que deben suceder cuando conecto mi base Thunderbolt en casa (deshabilitar wifi, habilitar bluetooth, ...).

Para detectar el muelle de Thunderbolt, uso el siguiente servicio launchctl :

<?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>

Este servicio escucha a launchd para que ocurra un cambio de red (detección de la red cableada que está conectada al dock). Esta configuración parece funcionar pero es muy lenta de detectar y actuar cuando el dock está conectado.

Ya se necesita mucho tiempo para que se configure la red de acoplamiento, pero después de eso, también toma otros 5 segundos antes de que se llame al script.

¿Hay alguna manera de hacer que el servicio detecte los cambios en la red más rápido (sin configurar un servicio de sondeo)?

    
pregunta romeovs 30.07.2014 - 14:07

1 respuesta

1

Lo más probable es que el retraso esté dentro del centro de notificación; El servicio notifyd no es crítico de tiempo.

Considere usar un proceso que observe las notificaciones de nivel IOKit. En la capa IOKit, las notificaciones se envían y se diseñan inmediatamente para los procesos que reaccionan a los cambios de hardware.

Intentando usar Growl y HardwareGrowler además de activar tu script.

    
respondido por el Graham Miln 30.07.2014 - 17:47

Lea otras preguntas en las etiquetas