Launchd начинает событие через 40 секунд?

5

Я создал .plistфайл, который должен действовать как системный демон (глобальный с rootпользователем). Этот .plistфайл прослушивает settingsкаталог для изменений, таких как изменение настроек сети. Когда это происходит, он должен запустить скрипт Bash.

Тем не менее, это работает, но не так, как ожидалось. Когда я открываю VPN-подключение, выполнение сценария Bash занимает около 40 секунд. Я хотел бы, чтобы он выполнялся сразу после открытия VPN-подключения.

Как убрать задержку перед запуском?

Вот код .plistфайла:

   <plist version="1.0">
   <dict>
        <key>Label</key>
        <string>lucafuhl.vpnhelper</string>
            <key>Program</key>
            <string>/Users/vpnhelper.sh</string>
        <key>WatchPaths</key>
            <string>/Library/Preferences/SystemConfiguration</string>
    </dict>
    </plist>
reav0r
источник
3
Пожалуйста, предоставьте ваш файл .plist, чтобы мы могли видеть, какие свойства вы используете.
NReilingh
Для какого файла внутри SystemConfiguration вы отслеживаете изменения? Возможно ли, что файл не будет изменен в течение 40 секунд после установки VPN?
tron_jones
Из того, что я знаю об этой системе, я смотрю все файлы в /Library/Preferences/SystemConfiguration. Я не знаю точно, какой файл меняется. Именно так я нашел здесь на stackexchange
reav0r
Для меня это не сильная область, но если в вашем конфигурационном файле plist есть проблема, более простым способом его создания будет использование LaunchControl [ soma-zone.com/LaunchControl/] - см. Также launchd.info.
Harv

Ответы:

1

Две вещи:

Попробуйте разместить свой

<string>/Library/Preferences/SystemConfiguration</string> 

внутри

<array> 
</array>

Кроме того, вы можете увидеть, когда на самом деле происходит изменение, с помощью приведенной ниже команды.

sudo fs_usage -f filesys | grep /Library/Preferences/SystemConfiguration
Роберт Фэйкс
источник