Launchd — Crons locais no Mac do Junior¶
Última revisão: 2026-04-21
Scripts em /Users/juniormaia/gita/scripts/cron/ agendados via Launchd no macOS.
Diretriz de longo prazo: migrar para o Easypanel (apiclickup) sempre que possível. Manter local só o que precisa do filesystem do Mac (commits git, por exemplo).
Agents ativos¶
| plist | Script | Schedule | O que faz | Candidato a migrar? |
|---|---|---|---|---|
com.juniormaia.eod-git-save |
eod-git-save.sh | Seg–sex 20h | WIP auto-commit no repo gita (salva progresso do dia) |
Não — precisa do filesystem local |
com.juniormaia.hauly-weekly |
hauly-weekly-report.sh | Seg 10h | Relatório semanal Hauly (PDF) + envia no WhatsApp | Sim, migrar pra apiclickup |
com.juniormaia.health-ping |
health-ping.sh | Cada 30min | Ping em /health do apiclickup, alerta se fora |
Sim, migrar (ou usar monitor externo tipo UptimeRobot) |
com.juniormaia.morning-briefing |
morning-briefing.sh | Seg–sex 8h | Briefing matinal (git + server + métricas) | Sim, migrar pra apiclickup |
com.juniormaia.weekly-digest |
weekly-digest.sh | Seg 9h | Digest semanal | Sim, migrar |
Scripts órfãos (sem plist — não rodam)¶
Existem mas ninguém chama:
send-daily-report.sh— redundante com o cronscheduled-reportsdo apiclickup. Manter deletável.daily-metrics.sh— gera markdown das métricas do dia. Era input do briefing matinal.
Decisão: deletar quando a migração do morning-briefing pro apiclickup estiver feita.
Comandos operacionais¶
# Listar agents da Gita rodando
launchctl list | grep juniormaia
# Pausar um agent (até próximo login)
launchctl unload ~/Library/LaunchAgents/com.juniormaia.<nome>.plist
# Reativar
launchctl load ~/Library/LaunchAgents/com.juniormaia.<nome>.plist
# Forçar execução agora
launchctl start com.juniormaia.<nome>
# Ver logs do agent
tail -f ~/gita/server/logs/launchd-<nome>.log
tail -f ~/gita/server/logs/launchd-<nome>-error.log
Health-ping — fix aplicado em 21/04/2026¶
Sintoma¶
health-ping.sh retornava HTTP 000 a cada 30min porque caía no default https://localhost:3000/health (ninguém estava atendendo naquela porta no Mac).
Fix¶
- Script agora falha com erro explícito se
GITA_HEALTH_URLnão estiver configurada. - Configurar a URL no plist (persiste entre reboots), não só no shell do Junior.
Passo-a-passo¶
Editar ~/Library/LaunchAgents/com.juniormaia.health-ping.plist e adicionar dentro do bloco <dict> (antes do </plist>):
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
<key>HOME</key>
<string>/Users/juniormaia</string>
<key>GITA_HEALTH_URL</key>
<string>https://apiclickup.gita.work/health</string>
</dict>
Confirmar a URL real do apiclickup no Easypanel antes de gravar. Pode ser
gita.work,grupogita.com.brou outro domínio do tenant.
Depois:
launchctl unload ~/Library/LaunchAgents/com.juniormaia.health-ping.plist
launchctl load ~/Library/LaunchAgents/com.juniormaia.health-ping.plist
# Testar já
bash ~/gita/scripts/cron/health-ping.sh && echo "OK"
Diagnóstico rápido¶
# Testar a URL manualmente
curl -v "$GITA_HEALTH_URL"
# Ver últimos 50 pings
tail -50 ~/gita/server/logs/cron.log | grep "Health Ping"