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.
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 olaunchd
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 comandolaunchctl
:
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