←→ Underneath: Background Apps · Összes Mac-útmutató

Hogyan tilthatod le biztonságosan a launch agenteket egy Macen?

A leggyakoribb tanács az, hogy töröld a .plist fájlt a LaunchAgents mappából. Ez egyben a legrosszabb módszer is: a feladat az újraindításig tovább fut, és nem tudod visszavonni. Íme a biztonságos, visszafordítható módszer.

Röviden: keresd meg a feladat címkéjét, majd futtasd ezt:

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

Az első parancs azonnal leállítja. A második újraindítás után is kikapcsolva tartja. A launchctl enable visszavonja.

Mielőtt elkezded: ne nyúlj semmihez a /System/Library mappában, és egyetlen com.apple. kezdetű címkéhez sem. Ezek a macOS részei. A VPN-, mentési, biztonsági és illesztőprogram-eszközöket hagyd békén, hacsak nem távolítod el az eszközt.

1. lépés: Keresd meg a feladatot

A launch agentek és daemonok három olyan mappában vannak, amelyet módosíthatsz:

Listázd ki, mi van most betöltve, az Apple saját feladatai nélkül:

launchctl list | grep -v com.apple

Az oszlopok: folyamatazonosító (-, ha nem fut), utolsó kilépési állapot és címke. A címkére lesz szükséged.

2. lépés: Nézd meg, mit csinál

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

Ha a program útvonala egy törölt appra mutat, a feladat maradvány, és nyugodtan eltávolítható. Ha frissítőről van szó, a letiltása után az app nem frissíti magát.

3. lépés: Készíts róla mentést

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

4. lépés: Állítsd le most

Agent esetén (bármelyik LaunchAgents mappában):

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

Daemon esetén a /Library/LaunchDaemons mappában:

sudo launchctl bootout system/com.example.label

Ez eltávolítja a feladatot, és leállítja a folyamatát. Újraindítás után nem marad így, ha a feladatnál be van állítva a RunAtLoad.

5. lépés: Tartsd kikapcsolva

Válassz egyet.

A lehetőség: launchctl disable (ajánlott)

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

Daemon esetén: sudo launchctl disable system/com.example.label.

A macOS a címkét a saját letiltási listájában tárolja, így a feladat akkor is kikapcsolva marad, ha az app újra megírja a plistjét. A listát így ellenőrizheted:

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

B lehetőség: helyezd át a plistet

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

A launchd csak a közvetlenül a LaunchAgents mappában lévő fájlokat olvassa, az almappákat nem, így a feladat a következő bejelentkezéskor nem töltődik be. A fájl megmarad, ha szükséged lenne rá. Ha az app újra létrehozza a plistet, a feladat visszatér; az A lehetőség ezt elkerüli.

C lehetőség: Rendszerbeállítások

Sok feladat a Rendszerbeállítások › Általános › Bejelentkezési elemek és bővítmények › Engedélyezés a háttérben listában is megjelenik. Az ottani kapcsoló kikapcsolása is működik, de egy kapcsoló ugyanannak a fejlesztőnek több feladatára is vonatkozhat. Lásd: Mit jelent az „Engedélyezés a háttérben”?

6. lépés: Ellenőrizd, hogy sikerült-e

launchctl list | grep com.example.label

Ha nincs kimenet, a feladat nincs betöltve. Indítsd újra a Macet, és a biztonság kedvéért futtasd le újra.

Visszavonás

Ha az A lehetőséget használtad:

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

Ha a B lehetőséget használtad, tedd vissza a fájlt, és futtasd ugyanazt a bootstrap sort. Daemonoknál használd a sudo előtagot és a system tartományt a gui/$(id -u) helyett.

Régi parancsok, amelyekkel a neten találkozhatsz

A launchctl unload -w file.plist és a launchctl load -w file.plist még működik, de az Apple elavultnak nevezi őket. A bootout, bootstrap, disable és enable a jelenlegi parancsok, és érthetőbb hibaüzeneteket adnak.

GYIK

Biztonságos törölni a LaunchAgents mappában lévő fájlokat?

A letiltás biztonságosabb a törlésnél. Egy plist törlése nem állít le egy már betöltött feladatot, és elveszíted a fájlt, ha később kellene. Használd a launchctl bootout és a launchctl disable parancsot, vagy helyezd át a fájlt egy biztonsági mentési mappába.

Használjam a launchctl unload -w parancsot?

Még működik, de az Apple a load és unload parancsot elavultnak jelöli. Jelenlegi macOS-en a launchctl bootout paranccsal állítsd le a feladatot, és a launchctl disable paranccsal tartsd kikapcsolva.

Letilthatom az Apple launch agentjeit a /System/Library mappában?

Ne tedd. A macOS részei, a Rendszerintegritás-védelem (SIP) védi a fájlokat, és a letiltásuk elronthat olyan funkciókat, mint az iCloud, a Spotlight vagy a frissítések.

Hogyan vonhatom vissza a launchctl disable parancsot?

Futtasd a launchctl enable gui/$(id -u)/<label> parancsot, majd a launchctl bootstrap gui/$(id -u) parancsot a plist útvonalával, vagy jelentkezz ki és be.

Az app visszatette a launch agentjét. Most mi legyen?

Használd a launchctl disable parancsot. Ez a címkét tiltja le, így a feladat akkor is kikapcsolva marad, ha az app újra megírja a plistet. Kapcsold ki az app saját „Indítás bejelentkezéskor” beállítását is.