←→ Underneath: Background Apps · Todos os guias para Mac

Como desativar agentes de arranque num Mac em segurança

Apagar um .plist de LaunchAgents é o conselho que mais se vê. É também a pior forma: a tarefa continua em execução até reiniciar, e não é possível anular. Veja a forma segura e reversível.

Resposta curta: encontre o label da tarefa e execute

launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label

O primeiro comando para a tarefa agora. O segundo mantém-na desativada depois de reiniciar. launchctl enable anula isso.

Antes de começar: não mexa em nada em /System/Library nem em labels que comecem por com.apple.. Pertencem ao macOS. Não toque nas ferramentas de VPN, cópias de segurança, segurança e controladores, a menos que esteja a remover a ferramenta.

Passo 1: Encontrar a tarefa

Os agentes de arranque (launch agents) e os daemons ficam em três pastas que pode alterar:

Liste o que está carregado agora, sem as tarefas da própria Apple:

launchctl list | grep -v com.apple

As colunas são o ID do processo (- se não estiver em execução), o último estado de saída e o label. Precisa do label.

Passo 2: Verificar o que faz

plutil -p ~/Library/LaunchAgents/com.example.label.plist

Se o caminho do programa apontar para uma app que apagou, a tarefa é um resto e pode ser removida em segurança. Se for um atualizador, desativá-lo significa que a app não se vai atualizar sozinha.

Passo 3: Fazer uma cópia de segurança

mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/

Passo 4: Parar agora

Para um agente (em qualquer uma das pastas LaunchAgents):

launchctl bootout gui/$(id -u)/com.example.label

Para um daemon em /Library/LaunchDaemons:

sudo launchctl bootout system/com.example.label

Isto descarrega a tarefa e termina o respetivo processo. O efeito não sobrevive a um reinício se a tarefa tiver RunAtLoad.

Passo 5: Manter desativada

Escolha uma opção.

Opção A: launchctl disable (recomendada)

launchctl disable gui/$(id -u)/com.example.label

Para um daemon: sudo launchctl disable system/com.example.label.

O macOS guarda o label na sua própria lista de elementos desativados, por isso a tarefa continua desativada mesmo que a app volte a escrever o plist. Consulte a lista com:

launchctl print-disabled gui/$(id -u)

Opção B: mover o plist para outro lado

mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/

O launchd só lê os ficheiros que estão diretamente na pasta LaunchAgents, não em subpastas, por isso a tarefa não será carregada no próximo início de sessão. O ficheiro continua lá se precisar dele. Se a app voltar a criar o plist, a tarefa volta; a Opção A evita isso.

Opção C: Definições do Sistema

Muitas tarefas também aparecem em Definições do Sistema › Geral › Elementos de início de sessão e extensões › Permitir em segundo plano. Desativar o interruptor aí também funciona, mas um único interruptor pode abranger várias tarefas do mesmo programador. Veja o que significa “Permitir em segundo plano”.

Passo 6: Confirmar que funcionou

launchctl list | grep com.example.label

Se não aparecer nada, a tarefa não está carregada. Reinicie e volte a executar o comando para ter a certeza.

Anular

Se usou a Opção A:

launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist

Se usou a Opção B, mova o ficheiro de volta e execute a mesma linha com bootstrap. Para daemons, use sudo e system em vez de gui/$(id -u).

Comandos antigos que vai encontrar na internet

launchctl unload -w file.plist e launchctl load -w file.plist ainda funcionam, mas a Apple considera-os legados. bootout, bootstrap, disable e enable são os atuais e dão erros mais claros.

FAQ

É seguro apagar ficheiros em LaunchAgents?

É mais seguro desativar do que apagar. Apagar um plist não para uma tarefa que já está carregada, e perde o ficheiro se precisar dele de volta. Use launchctl bootout e launchctl disable, ou mova o ficheiro para uma pasta de cópia de segurança.

Devo usar launchctl unload -w?

Ainda funciona, mas a Apple classifica load e unload como legados. No macOS atual, use launchctl bootout para parar uma tarefa e launchctl disable para a manter desativada.

Posso desativar agentes de arranque da Apple em /System/Library?

Não o faça. Fazem parte do macOS, a Proteção da integridade do sistema protege os ficheiros, e desativá-los pode avariar funcionalidades como o iCloud, o Spotlight ou as atualizações.

Como anulo o launchctl disable?

Execute launchctl enable gui/$(id -u)/<label> e depois launchctl bootstrap gui/$(id -u) com o caminho do plist, ou termine a sessão e volte a iniciá-la.

A app voltou a pôr o agente de arranque. E agora?

Use launchctl disable. Desativa o label, por isso a tarefa continua desativada mesmo que a app volte a escrever o plist. Desative também a definição “Abrir ao iniciar sessão” da própria app.