Launchd é um serviço de gerenciamento de processos do sistema operacional macOS da Apple. Ele lida com iniciação, parada e gerenciamento de daemons, aplicativos, processos e scripts. Ele foi projetado para consolidar várias tarefas utilitárias e scripts que foram manipulados por diferentes partes do sistema (como init, xinetd ou cron) em uma ferramenta unificada.

O launchd tem a responsabilidade de iniciar processos diretamente em resposta a eventos do sistema ou em horários específicos. Isso permite que o sistema operacional seja mais eficiente em termos de energia e reduz a complexidade no processo de inicialização.

https://www.launchd.info/

Exemplo atualizado de .plist:

<?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.exemplo.tarefa-python-periodica</string>
 
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/python3</string> <!-- Ou o caminho para o seu interpretador Python preferido -->
        <string>/Users/seu_usuario/myscript.py</string>
    </array>
 
    <key>StartInterval</key>
    <integer>600</integer> <!-- Neste exemplo, o comando é executado a cada 10 minutos -->
 
    <key>RunAtLoad</key>
    <true/> <!-- Executa quando o sistema é carregado -->
 
</dict>
</plist>

Ajuste o caminho:

  • Substitua seu_usuario pelo seu nome de usuário real.
  • Certifique-se de usar o caminho absoluto para myscript.py, pois o launchd pode não expandir o atalho ~.

Salvar e carregar:

  • Salve este arquivo como com.exemplo.tarefa-python-periodica.plist em ~/Library/LaunchAgents ou em outro diretório apropriado.
  • Carregue-o no launchd usando o comando launchctl:
launchctl load ~/Library/LaunchAgents/com.exemplo.tarefa-python-periodica.plist

Esta configuração executará seu script Python a cada 10 minutos. Ajuste o valor de StartInterval conforme necessário.

Pode-se fazer um unload para carregar novamente load:

launchctl unload ~/Library/LaunchAgents/com.exemplo.tarefa-python-periodica.plist

Para ver os logs:

cat /var/log/com.apple.xpc.launchd/launchd.log | grep -i LABEL