←→ Underneath: Background Apps · Усі посібники для Mac
Як безпечно вимкнути агенти запуску на Mac
Найчастіша порада — видалити .plist з LaunchAgents. Але це й найгірший спосіб: завдання працює далі до перезавантаження, а скасувати видалення не можна. Ось безпечний спосіб, який можна скасувати.
Коротко: знайдіть мітку завдання й виконайте
launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label
Перша команда зупиняє його зараз. Друга не дає йому запуститися після перезавантажень. launchctl enable скасовує це.
Перш ніж почати: не чіпайте нічого в /System/Library і жодної мітки, що починається з com.apple.. Вони належать macOS. Не чіпайте VPN, засоби резервного копіювання, безпеки та драйвери, якщо тільки ви не видаляєте саму програму.
Крок 1. Знайдіть завдання
Агенти й демони запуску лежать у трьох папках, які можна змінювати:
~/Library/LaunchAgents: ваші власні агенти. Пароль не потрібен./Library/LaunchAgents: агенти для всіх користувачів. Щоб змінити файл, потрібен пароль адміністратора./Library/LaunchDaemons: системні демони, працюють від імені root. Потрібенsudo.
Перегляньте, що завантажено зараз, без власних завдань Apple:
launchctl list | grep -v com.apple
Стовпці — це ідентифікатор процесу (-, якщо не працює), останній код завершення та мітка. Вам потрібна мітка.
Крок 2. Перевірте, що воно робить
plutil -p ~/Library/LaunchAgents/com.example.label.plist
ProgramArgumentsабоProgram: що воно запускає. Чи веде шлях до знайомої вам програми? Чи ця програма досі існує?RunAtLoad: запускається під час кожного входу.KeepAlive: перезапускається, коли зупиняється.StartInterval/StartCalendarInterval: запускається за розкладом.
Якщо шлях до програми веде до програми, яку ви видалили, завдання — це залишок, і його безпечно прибрати. Якщо це оновлювач, після вимкнення програма не оновлюватиметься сама.
Крок 3. Зробіть резервну копію
mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/
Крок 4. Зупиніть його зараз
Для агента (в будь-якій із папок LaunchAgents):
launchctl bootout gui/$(id -u)/com.example.label
Для демона в /Library/LaunchDaemons:
sudo launchctl bootout system/com.example.label
Це вивантажує завдання й завершує його процес. Але після перезавантаження воно повернеться, якщо в завданні є RunAtLoad.
Крок 5. Залиште його вимкненим
Виберіть один варіант.
Варіант A: launchctl disable (рекомендовано)
launchctl disable gui/$(id -u)/com.example.label
Для демона: sudo launchctl disable system/com.example.label.
macOS зберігає мітку у власному списку вимкнених, тож завдання залишається вимкненим, навіть якщо програма знову запише свій plist. Переглянути список можна так:
launchctl print-disabled gui/$(id -u)
Варіант B: перенесіть plist в інше місце
mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/
launchd читає лише файли безпосередньо в папці LaunchAgents, а не в підпапках, тож під час наступного входу завдання не завантажиться. Файл залишається на місці, якщо він вам знадобиться. Якщо програма створить plist заново, завдання повернеться; варіант A цього уникає.
Варіант C: Системні параметри
Багато завдань також показано в Системних параметрах › Загальні › Елементи входу та розширення › Дозволити у фоновому режимі. Вимкнути перемикач там теж можна, але один перемикач може охоплювати кілька завдань того самого розробника. Див. що означає «Дозволити у фоновому режимі».
Крок 6. Перевірте результат
launchctl list | grep com.example.label
Якщо команда нічого не виводить, завдання не завантажене. Для певності перезавантажте Mac і виконайте її ще раз.
Як скасувати
Якщо ви використали варіант A:
launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist
Якщо ви використали варіант B, поверніть файл на місце й виконайте той самий рядок із bootstrap. Для демонів використовуйте sudo і system замість gui/$(id -u).
Старі команди, які трапляються в інтернеті
launchctl unload -w file.plist і launchctl load -w file.plist досі працюють, але Apple називає їх застарілими. bootout, bootstrap, disable і enable — актуальні команди, і повідомлення про помилки в них зрозуміліші.
FAQ
Чи безпечно видаляти файли в LaunchAgents?
Вимкнути безпечніше, ніж видалити. Видалення plist не зупиняє вже завантажене завдання, а файл буде втрачено, якщо він знову знадобиться. Використовуйте launchctl bootout і launchctl disable або перенесіть файл у резервну папку.
Чи варто використовувати launchctl unload -w?
Ця команда досі працює, але Apple позначає load і unload як застарілі. У сучасній macOS використовуйте launchctl bootout, щоб зупинити завдання, і launchctl disable, щоб воно залишалося вимкненим.
Чи можна вимкнути агенти запуску Apple у /System/Library?
Не робіть цього. Вони є частиною macOS, файли захищає System Integrity Protection, а їх вимкнення може зламати такі функції, як iCloud, Spotlight чи оновлення.
Як скасувати launchctl disable?
Виконайте launchctl enable gui/$(id -u)/<label>, потім launchctl bootstrap gui/$(id -u) зі шляхом до plist або вийдіть із системи й увійдіть знову.
Програма повернула свій агент запуску. Що робити?
Використайте launchctl disable. Ця команда вимикає саму мітку, тож завдання залишається вимкненим, навіть якщо програма знову запише plist. Також вимкніть власне налаштування програми «Запускати під час входу».