Como investigar processos desconhecidos no Mac
O Monitor de Atividade mostra apps, auxiliares, agentes, daemons e serviços do sistema. Um nome familiar ou críptico é uma evidência fraca: programas diferentes podem compartilhar nomes genéricos, e um malware pode copiar um deles. Julgue um processo pelo dono, pelo caminho do executável, pelo processo pai, pela assinatura do código, pela tendência de uso e pela ação que o disparou.
Escolha Visualizar › Todos os Processos para a lista não ficar limitada à sua conta. Acrescente colunas úteis, como Usuário, Tempo de CPU, Threads e Tipo. Dê um clique duplo num processo para inspecionar o pai, os arquivos e as portas abertos e as estatísticas recentes. O guia do Monitor de Atividade da Apple também oferece visualização hierárquica e a dos processos do sistema. Amostrar Processo registra, por um período curto, o que as threads estão fazendo quando o processo parece travado, sem encerrá-lo na hora.
Os que mais preocupam
- kernel_task representa trabalho do kernel, e CPU alta pode incluir o macOS limitando outros processos para controlar o calor, como em kernel_task com CPU alta.
- WindowServer desenha a sua tela; a carga sobe com monitores e janelas, em WindowServer com CPU alta.
- mds, mds_stores, mdworker são o Spotlight indexando seus arquivos, em mds e mdworker com CPU alta.
- Os processos Google Chrome Helper são as abas e as extensões do Chrome, em Chrome Helper com CPU alta.
Os daemons de fundo que você não iniciou
Eles rodam sozinhos e quase sempre estão bem:
- launchd é o primeiro processo que o macOS inicia e o pai de todo serviço. Ele está sempre em execução; esse é o trabalho dele.
- trustd confere certificados e assinaturas de apps quando um app abre ou faz uma conexão segura. Picos breves ao abrir um app são normais.
- nsurlsessiond cuida de transferências de rede em segundo plano: iCloud, downloads de apps, atualizações. Ele sobe enquanto algo sincroniza ou baixa, e depois se aquieta.
- cloudd e bird fazem a sincronização do iCloud. Trabalham forte logo depois que você entra na conta ou coloca muitos arquivos no iCloud, e depois sossegam.
- coreaudiod é o motor de áudio do sistema. Deve ficar leve; CPU alta e contínua às vezes aponta para um app ou plug-in de áudio se comportando mal.
- photoanalysisd analisa o conteúdo das fotos para recursos como pessoas e objetos. O agendamento é oportunista e pode variar com energia, estado térmico e trabalho na fototeca.
- backupd é o Time Machine fazendo um backup. Espere que ele fique ocupado enquanto um backup está em andamento.
- syspolicyd ajuda a aplicar as políticas de segurança do sistema, inclusive a avaliação de apps. Um pico durante a instalação ou a primeira abertura tem contexto; trabalho contínuo sem relação ainda merece medição.
Normal ou travado é um padrão, não um cronômetro
Procure correlação e progresso. Um processo que sobe depois de abrir um app, conectar um disco ou iniciar uma sincronização, atravessa o trabalho e se aquieta, está se comportando de um jeito plausível. CPU contínua sem progresso, memória crescendo rápido, travamentos repetidos ou um pico que começa depois do mesmo gatilho merecem investigação. Compare uma amostra, a atividade de arquivos abertos e os logs antes de forçar o encerramento. Muitos serviços do sistema reabrem porque o app que pediu o trabalho, ou a política de inicialização, ainda precisa deles.
Para software de terceiros, confira se o caminho do executável está dentro do app esperado ou do local de suporte do fornecedor, e se a assinatura pertence a esse fornecedor. Para serviços da Apple, mudar ou apagar a configuração de inicialização raramente é o conserto; identifique o cliente, o conjunto de arquivos, o dispositivo ou a operação de rede que alimenta o serviço.
Prove o dono antes de encerrar
O inspetor do Monitor de Atividade é o caminho mais fácil. No Terminal, a mesma checagem começa pelo PID, não pelo nome exibido:
PID=1234
ps -p "$PID" -o pid=,ppid=,user=,etime=,comm=
lsof -p "$PID" | head
O pai e o caminho do executável ligam um auxiliar genérico ao app que o lançou; os arquivos abertos mostram o projeto, a biblioteca, o dispositivo ou o banco que está alimentando o trabalho agora. Se o caminho pertence a um app de terceiros, inspecione a assinatura sem alterá-la:
codesign -dv --verbose=4 "/path/to/the/binary" 2>&1
Um nome familiar com um caminho ou um signatário inesperado merece investigação. Um nome desconhecido dentro de um local de sistema assinado pela Apple não é suspeito só porque é novo para você. Encerre primeiro o app dono e só então veja se o auxiliar se aquieta ou sai, antes de forçar o encerramento do processo filho.
Por dentro: o launchd e os serviços sob demanda
A razão de haver tantos daemons é o launchd, o primeiro processo que o macOS inicia (PID 1) e o pai de todo o resto. A maior parte desses processos de fundo não fica rodando o tempo todo: o launchd os registra e os inicia sob demanda quando um evento correspondente acontece, uma conexão segura que precisa do trustd, um arquivo entregue a um importador, uma mensagem XPC de um app, e depois deixa que eles voltem a ficar ociosos. É por isso que a lista muda enquanto você trabalha, e por isso que forçar o encerramento de um muitas vezes não faz nada: o launchd o relança na próxima vez que o gatilho dispara. Isso muda o sentido da lista inteira. Você não está olhando para programas que alguém escolheu executar, e sim para um conjunto de serviços pequenos que o sistema inicia e para conforme o trabalho chega, e é exatamente por isso que o comportamento ao longo do tempo, não a mera presença, é o sinal de que algo está errado.
Onde uma camada de explicação ajuda
O Monitor de Atividade fornece os dados oficiais do processo e do inspetor. A visualização Status do Mole pode acrescentar contexto em linguagem simples e tendências, mas uma explicação baseada num nome é só uma hipótese inicial. Caminho, dono, assinatura e comportamento decidem se o processo atual é o esperado.
Uma checagem de processo que dá para repetir
Anote o nome do processo, o usuário, o caminho, o pai, a assinatura, a tendência de CPU e de memória, os arquivos abertos e o gatilho. Faça uma amostra enquanto o problema acontece e só então pare o app ou a entrada que pediu o trabalho, antes de mexer no daemon. Esse método separa trabalho de fundo comum, um auxiliar de fornecedor travado e um nome personificado bem melhor do que uma lista de definições de processo sozinha.