←→ 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:
~/Library/LaunchAgents: a saját agentjeid. Nem kell jelszó./Library/LaunchAgents: minden felhasználó agentjei. A fájl módosításához rendszergazdai jelszó kell./Library/LaunchDaemons: rendszerdaemonok, root jogosultsággal futnak.sudokell hozzájuk.
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
ProgramArgumentsvagyProgram: mit futtat. Ismert appra mutat az útvonal? Létezik még az az app?RunAtLoad: minden bejelentkezéskor elindul.KeepAlive: újraindul, ha leáll.StartInterval/StartCalendarInterval: ütemezés szerint fut.
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.