Jak zrestartować uruchomiony OS X bez ponownego uruchamiania?

14

Kiedy uruchamiam Zotero / Firefox, często ulegają awariom i mam proces zombie; po tym nie mogę otworzyć nowych instancji Zotero lub Firefox. Chcę raczej pozbyć się tych procesów zombie niż restartować, więc dla <pid>procesu zombie,

$ ps -p <pid> -o ppid=

daje mi <parent_pid>i

ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'

mówi mi, że proces nadrzędny jest /sbin/launchddla użytkownika crippledlambda.

Czy istnieje sposób na ponowne uruchomienie bez zabijania mojego systemu?

sudo kill -1 <parent_pid>

nic nie robi. Próbowałem napisać to w skrypcie i uruchomić za pomocą sudo:

for i in `launchctl list | grep launchd | awk -v PID=<parent_pid> '$1==PID { print $NF }'`; do `launchctl stop $i && launchctl start $i` ; done

i to oczywiście (?) pozostawia mi nieaktywny szary ekran, więc i tak muszę zrestartować komputer. Z góry dziękuję za sugestie.

hatmatrix
źródło
Dlaczego zabijasz uruchamiany zamiast samych procesów? uruchomienie jest kluczową częścią sesji użytkownika; nawet gdybyś mógł ją zrestartować, nowa instancja nie byłaby rodzicem wszystkich innych procesów, za które jest odpowiedzialna za ... rzeczy takie jak Finder, Dock itp.
Gordon Davisson
@Gordon, nie możesz zabijać procesów zombie, więc musisz iść za rodzicem, chyba że czegoś mi brakuje.
hatmatrix
Czy to prawdziwe zombie (tj. Procesy, które zakończyły się, ale których status wyjścia nie został odczytany)? Jeśli tak, coś głębszego jest nie tak, ponieważ launchdzawsze powinien natychmiast odczytać status wyjścia swoich dzieci. Jeśli to nie są naprawdę zombie, powinieneś je zabijać. W obu przypadkach zabijanie launchdspowoduje więcej problemów niż rozwiązuje.
Gordon Davisson

Odpowiedzi:

17

Właściwym sposobem na zatrzymanie i uruchomienie demonów uruchomieniowych jest launchctl unload .

Na przykład:

Można zatrzymać usługę uruchomienie demona za pomocą wyładowania komendy z launchctl .

$ sudo launchctl unload /System/Library/LaunchDaemons/<daemon name>.plist

Aby uruchomić wyłączonego lub zatrzymanego demona uruchamiania:

$ sudo launchctl load /System/Library/LaunchDaemons/<daemon name>.plist

★ Zachowaj ostrożność przy przypadkowym wyłączaniu demonów uruchamiania - zwłaszcza oficjalnych Apple; może potencjalnie uniemożliwić uruchomienie systemu do momentu uruchomienia go w trybie awaryjnym i ręcznego ponownego włączenia. Nie zabijasz Launctl jak normalny proces, ponieważ może on potencjalnie zabić twój system, tak jak doświadczyłeś.

> więcej informacji na temat launchctl tutaj . (Strona manuala Apple launchctl)

Mena Ortega
źródło
Przepraszam, czy to jest com.apple.bsd.launchdadd.plist? Nie widzę launchddokładnie. I dzięki za ostrzeżenie ...
hatmatrix
Do przyszłego wykorzystania te polecenia również działają scrun simctl spawn <sim_id> sudo launchctl unload …. Pliki z listą plist są poniżej$(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/LaunchDaemons/
Leo Natan
3

Ze strony podręcznika uruchomionego:

Nie można wywołać uruchomionego bezpośrednio.

Dlatego nawet jeśli mógłbyś go zatrzymać, nie byłbyś w stanie go uruchomić, więc odpowiedź jest taka, że ​​nie ma mowy.

Ostergaard
źródło
1
Dlaczego głosowanie negatywne? Mój post poprawnie odpowiada na zadane pytanie. To prawda, że ​​drugi post jest bardziej konstruktywny, ale tak naprawdę nie odpowiada na rzeczywiste pytanie zgodnie z tytułem postu!
ostergaard
Drugi post odpowiada na pytanie.
DavidPostill
2
Nie, nie mówi, mówi, jak zrestartować demony, aby się nie uruchomiło.
ostergaard
3
lol - i takie podejście, że dokładność nie ma już znaczenia, tłumaczy powolny spadek jakości SO. Szczęśliwego Nowego Roku!
ostergaard
1
Szkoda, że ​​nie mogę komentować komentarzy. Nie tylko ta odpowiedź jest poprawna, ale druga odpowiedź w ogóle nie odpowiada na pytanie. Nie chodzi tu o demony uruchamiane przez uruchomienie, ale procesy zombie dziedziczone przez uruchamianie, gdy proces nieodpowiadania został siłą zakończony. Mam ten sam problem i nie mam cholernego demona do zabicia, ponieważ jest to przeglądarka, która wyzwala nieprawidłowe działanie podczas uruchamiania. Odpowiadanie „cokolwiek” powoduje, że moja krew gotuje się, ponieważ ci sami ludzie, którzy znaleźli odpowiedź użyteczną, nie rozumieją pytania w pierwszej kolejności, a to gorzej o rząd wielkości.
SaltwaterC