←→ 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:
~/Library/LaunchAgents: os seus próprios agentes. Não é necessária palavra-passe./Library/LaunchAgents: agentes para todos os utilizadores. Alterar o ficheiro exige uma palavra-passe de administrador./Library/LaunchDaemons: daemons do sistema, executados como root. Exigesudo.
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
ProgramArgumentsouProgram: o que executa. O caminho aponta para uma app que conhece? Essa app ainda existe?RunAtLoad: arranca em cada início de sessão.KeepAlive: reinicia quando para.StartInterval/StartCalendarInterval: é executada segundo um agendamento.
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.