Wygląda na to, że nie mogę edytować pliku plist z LaunchAgents - nawet jeśli wykonam sudo, nie będę mógł usunąć ani zmienić. Czy muszę to koniecznie wyłączyć SIP, aby to zrobić?
game-center
macos
sip
jrgd
źródło
źródło
Odpowiedzi:
Wyłącz LaunchAgent (nie LaunchDaemons) i uruchom ponownie komputer ( bez sudo):
Jeśli chcesz włączyć go ponownie w jednym punkcie:
źródło
sudo
launchctl list
?Zgodnie z tym wątkiem możesz wykonać:
Aby sprawdzić bieżący stan demona, użyj:
źródło
Jednym z rozwiązań jest utworzenie skryptu bash, aby zatrzymać usługę gry po zalogowaniu. Użyj Automatora w OS X, aby utworzyć skrypt bash, a następnie dodaj go jako element logowania do swojego konta OS X. Przy następnym logowaniu powinieneś otrzymać monit o wykonanie skryptu. Zwykle czekam, aż zobaczę powiadomienie Little Snitch, że gra jest telefoniczna, a następnie klikam „Kontynuuj”, aby uruchomić skrypt. Nie zostało to dopracowane i możesz napotkać problemy, jeśli uruchomisz je natychmiast po zalogowaniu się do OS X. Wolę trzymać się z dala od rozwiązań, które wyłączają usługę, ponieważ wymagają wyłączenia / zastąpienia SIP, odradzam.
Oto skrypt bash, którego używam. Wszelkie sugestie dotyczące ulepszenia są mile widziane.
źródło
Problem polega na tym, że zaakceptowana odpowiedź podana powyżej:
nie działa. Widziałem to również za pomocą
-w
flagi. W każdym razie, w ostatnich aktualizacjach, myślę o El Capitan lub Yosemite, zamiast tego dostajesz wiadomośćOchrona integralności systemu znana jest również pod skrótem SIP. Aby go wyłączyć, musisz uruchomić system Recovery OS i uruchomić
csrutil disable
.Zrobiłem tę sekwencję w poprzednich wersjach i doprowadziło to do możliwości wyłączenia gry za pomocą
launchctl
polecenia.Przypuszczam, że po wyłączeniu gry można ponownie włączyć SIP. Może to byłby najlepszy z obu światów, chociaż w sumie jest to żmudny proces.
źródło
co
sudo launchctl unload /System/Library/Launch\ Daemons/com.apple.gamed.plist
?źródło
w OS Sierra przejdź do Ustawień systemowych, kont internetowych i usuń (z minusem) Game Center z listy (po lewej stronie).
źródło
Z punktu widzenia bezpieczeństwa nie robi to żadnej różnicy, ponieważ po prostu przywraca system dokładnie tak, jak działał przed SIP, i dokładnie tak, jak działają prawie wszystkie systemy uniksowe. Wartość SIP jest w najlepszym razie dyskusyjna. Odpowiada na to pytanie, ponieważ jedynym sposobem na użycie polecenia Launchctl do rozładowania pliku listy odtwarzania jest najpierw wyłączenie SIP, uruchomienie, rozładowanie pliku listy odtwarzania, a następnie, w razie potrzeby, ponowne włączenie SIP.
źródło
Inną opcją, która działa w 10.11.6, jest odmiana metody sugerowanej przez @ Le-Sci. Utwórz skrypt powłoki, który wyłącza proces gry:
Polecenie uśpienia mówi skryptowi, aby poczekał 30 sekund przed rozpoczęciem procesu kończenia gry, aby dać systemowi wystarczająco dużo czasu na załadowanie gry przed próbą jej zakończenia; możesz dostosować czas oczekiwania w razie potrzeby. Polecenie „kill -9” wymusza zamknięcie żądanego procesu, ale akceptuje tylko numer identyfikacyjny procesu, a nie nazwę procesu, dlatego do wyszukania identyfikatora procesu służy „pgrep”. Zanotuj miejsce zapisania skryptu (w tym przykładzie zapiszę go jako „forceQuitGamed” w / Users / myaccountname /).
Daj uprawnienia do wykonywania skryptu:
Utwórz plik listy agenta uruchamiania, który będzie uruchamiany przy każdym logowaniu do konta. Jeśli wcześniej nie utworzyłeś pliku plist, możesz to zrobić za pomocą TextEdit. Plik skryptu musi być zapisany jako zwykły tekst, więc jeśli domyślne preferencje dla TextEdit wymagają formatowania tekstu sformatowanego, wykonaj polecenie Format> Utwórz zwykły tekst, aby przekonwertować na zwykły tekst, zanim spróbujesz użyć nowego pliku plist agenta uruchamiania.
Łańcuch w tablicy pod „ProgramArguments” to ścieżka / do / twojego / powłoki. Zapisz plik w ~ / Library / LaunchAgents /. W tym przykładzie nazwałem plik plist com.myaccountname.forceQuitGamed.plist, więc można go znaleźć pod adresem
Teraz za każdym razem, gdy logujesz się na swoje konto, gra powinna być wymuszona po kilku sekundach od załadowania. (Jeśli potrzebujesz, aby została zakończona jak najszybciej po załadowaniu, spójrz na metodę @ Le-Sci.) To podejście działa bez konieczności wyłączania Ochrony integralności systemu.
źródło
Musisz najpierw wejść
csrutil disable
w Terminal w trybie odzyskiwania, a następnie ponownie uruchomić wprowadzić zmiany, ponownie uruchomić w trybie odzyskiwania i zrobićcsrutil enable
, uruchom ponownie.Ale nie wiem, które procesy po modyfikacji wpłyną na rozruch w El Capitan
źródło