Mam aplikację na OSX, która wielokrotnie przechodzi w stan braku odpowiedzi i musi zostać zabita siłą. Miałem nadzieję zautomatyzować go, ale podczas sprawdzania procesu za pomocą ps nie widzę niczego, co odpowiada stanowi Nie odpowiadam. Spojrzałem na wskaźnik stanu , ale aplikacja pokazuje jako S, czy odpowiada, czy nie.
stan Stan jest podawany przez ciąg znaków, na przykład `` RWNA ''. Pierwszy znak wskazuje stan uruchomienia procesu:
- I Oznacza proces bezczynności (spanie dłużej niż około 20 sekund).
- R Oznacza uruchamialny proces.
- S Oznacza proces, który śpi przez mniej niż około 20 sekund.
- T Oznacza zatrzymany proces.
- U Oznacza proces w nieprzerwanym oczekiwaniu.
- Z Oznacza martwy proces (`` zombie '').
Jak mogę ustalić, czy proces nie odpowiada, jak robi to Menedżer aktywności?
Jestem również otwarty na rozwiązania AppleScript.
Oto skrypt AppleScript wykorzystujący skrypty interfejsu użytkownika, który szuka nie reagującego procesu i zabija go.
Będzie działać z monitorem aktywności Mavericks. Ale ponieważ jest to skrypt interfejsu użytkownika i ponieważ zmieniono interfejs użytkownika Monitora aktywności, najprawdopodobniej nie będzie działać ze starszym OS X bez drobnych modyfikacji.
źródło
tell radio button 1 of radio
. Usunąłem to i poprawiłem kilka innych rzeczy (chcę tylko zabić określony program) i otrzymałem błąd czasu wykonania: „błąd” Wystąpił błąd w zdarzeniach systemowych: Dostęp dla urządzeń pomocniczych jest wyłączony ”. numer -1719 z okna 1 procesu „Monitor aktywności”tell radio button 1 of radio group 1 of group 2 of toolbar 1 of window 1 to click
(Opublikowanie tego jako oddzielnej odpowiedzi, ponieważ jest zbyt długie, aby zmieściło się w komentarzu)
Podziękowania dla @MatthieuRiegler za oryginalny skrypt.
Działa to 10.12.6 i jest niewielką modyfikacją oryginalnego skryptu (zobaczyłem komentarz @ CharlieGorichanaz po tym, jak przeprowadziłem własne dochodzenie):
** 1 W systemie macOS 10.12.x pasek narzędzi zawiera dodatkowąikonę, dzięki której
group 2 of toolbar 1
zamiastprzycisków znajduje się zestaw przycisków (procesor, pamięć, energia itp.)group 1 of toolbar 1
. W przypadku braku tej ikony (nie potwierdziłem tego w starszych wersjach systemu macOS), myślę, że byłyby tam przyciski procesora itpgroup 1 of toolbar 1
** 2 Ma to zastosowanie, jeśli kiedykolwiek przeciągałeś kolumnę PID w kolumnie Aktywność w inne miejsce. Przeciągnąłem kolumnę PID do skrajnej lewej pozycji, więc w tym wierszu musiałem zmienić indeks na
1
:Kolumny są ponumerowane od lewej strony, zaczynając od 1. W razie potrzeby odpowiednio dostosuj podświetlony indeks w powyższej linii.
źródło