Como ativo o log do launchd no OS X 10.6?
Eu adicionei um novo daemon que não está sendo iniciado corretamente (o status é 1
).
Quero depurar o problema, mas não consegui encontrar launchd
logs, eles não estão no /var/log/launchd.log
.
Eu encontrei a solução
sudo launchctl log level debug
e depois disso
tail -f /var/log/system.log
Supondo que você esteja tentando registrar seu processo em vez de iniciar o próprio, se você incluir as seguintes linhas no arquivo launchd plist:
e recarregue o processo, qualquer registro ou impressão interna do seu script será capturado em um desses dois arquivos sempre que for executado. embora a rotação dos arquivos pareça depender de você. como seria de esperar, se você usar o mesmo arquivo nas duas instâncias, ele registrará o erro e o stdout no mesmo local.
Consulte: Depurando a seção jobs do launchd em Criando Daemons e Agentes de Inicialização .
fonte
No OS X 10.11 (El Capitan), você pode
sudo launchctl debug <service-target> --stdout --stderr
ativar o registro único, se não quiser usar a opção de sistema de arquivos sugerida pelo @peter.Muitas coisas são diferentes na implementação atual de
launchctl
, e isso<service-target>
é meio estranho. Por exemplo, suponha que eu tenha um serviço local que eu configure em~/Library/LaunchAgents/dev.localmon.plist
, que tenha o "rótulo"dev.localmon
. Sua<service-target>
égui/$UID/dev.localmon
, onde$UID
é o seu ID de usuário, que, uma vez que você está executando isso no CLI, o seu shell interpolará para você.Então, supondo que meu
dev.localmon
serviço estivesse travando na inicialização (era), eu poderia chamar o seguinte paralaunchctl
inserir o stdout e o stderr do processo no meu shell na próxima vez (e somente na próxima) que o serviço for iniciado:Como isso ocorre com os TTYs abertos e prontos, vá para outro terminal e execute:
Então, de volta ao primeiro terminal, você deverá ver a saída. (Estranhamente, ele não fecha quando o processo do serviço morre, então você deve pressionar Ctrl-C.)
Btw, depois de corrigir seu arquivo de configuração com qualquer PATH ou ambiente que esteja quebrando o serviço antes, você ainda precisará usar as
launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plist
duas etapas antigas , pois o supostouncache
subcomando da documentação tem o seguinte efeito:Yay para a estratégia de lançamento pós-Jobs da Apple: "Mova-se rápido e quebre coisas"
fonte
sudo launchctl debug
saiCould not find domain for
comigo