Carregar Automaticamente o LaunchDaemon?

4

Eu escrevi um pequeno script para atualizar automaticamente o meu local de rede com base em algumas condições, e juntei isso com um arquivo de inicialização para que ele fosse executado a cada dois minutos.

No entanto, notei que o meu plad launchd parece não ser carregado quando o computador é reinicializado. Meu plist está em ~/Library/LaunchDaemons e é bastante simples:

<?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>com.davedelong.location-updater</string>
    <key>Program</key>
    <string>/path/to/my/location_updater.rb</string>
    <key>StartInterval</key>
    <integer>180</integer>
</dict>
</plist>

Minhas LaunchDaemons pasta tem o esperado 700 permissões e executando launchctl load com meu plist faz as coisas funcionarem bem. É só que quando eu reinicio, não está sendo carregado.

Eu estava com a impressão de que tudo em ~/Library/LaunchDaemons e ~/Library/LaunchAgents foi carregado automaticamente pelo launchd. Não é este o caso? Se este é o caso (e eu acho que é), então por que o meu problema não está sendo carregado?

Dave DeLong
fonte

Respostas:

7

~/Library/LaunchDaemons não é um local válido para agentes de lançamento ou daemons de lançamento. Você está entendendo mal a terminologia. Os LaunchDaemons são processos de todo o sistema, enquanto os LaunchAgents são executados por usuário. A partir da página de manual do launchd:

~/Library/LaunchAgents         Per-user agents provided by the user.
/Library/LaunchAgents          Per-user agents provided by the administrator.
/Library/LaunchDaemons         System-wide daemons provided by the administrator.
/System/Library/LaunchAgents   Per-user agents provided by Mac OS X.
/System/Library/LaunchDaemons  System-wide daemons provided by Mac OS X.

Mova seu plist para ~/Library/LaunchAgentse deve funcionar.

BJ Homer
fonte
Aha Documentação para o resgate!
Dave DeLong