(Posting ini sebagai jawaban terpisah karena terlalu lama untuk dimasukkan dalam komentar)
Kredit ke @MatthieuRiegler untuk skrip asli.
Ini berfungsi pada 10.12.6 dan merupakan modifikasi kecil dari skrip asli (lihat komentar @ CharlieGorichanaz setelah saya melakukan penyelidikan sendiri):
set textToSearchForInProcessName to "Not Responding"
-- Run Activity Monitor
tell application "Activity Monitor" to activate
tell application "System Events" to tell process "Activity Monitor"
-- Wait for the Activity Monitor window to open
repeat until (exists window 1)
delay 1
end repeat
--display notification "Window appeared"
-- Wait for the Menubar to be present
repeat until (exists menu 1 of menu bar item "View" of menu bar 1)
delay 1
end repeat
--display notification "Menubar appeared"
-- Make sure View -> My Processes is selected
click menu item "My Processes" of menu 1 of menu bar item "View" of menu bar 1
-- Click the 'CPU View' button ( **1 )
click radio button 1 of radio group 1 ¬
of group 2 of toolbar 1 ¬
of window 1
-- Working with the list of processes
tell outline 1 of scroll area 1 of window 1
-- Looking for Not responding process
set notResponding to rows whose value of ¬
first static text contains textToSearchForInProcessName
repeat with aProcess in notResponding
-- For each non responding process retrieve the PID
set pid to value of text field 1 of aProcess -- ( **2 )
-- Kill that process using pid
if pid is not "" then do shell script ("kill -9 " & pid)
end repeat
end tell
end tell
** 1
Dalam macOS 10.12.x, bilah alat berisiikontambahanyang digunakangroup 2 of toolbar 1
sebagai gantirangkaian tombol (CPU, Memori, Energi, dll.) group 1 of toolbar 1
. Dengan tidak adanya ikon itu (saya belum mengkonfirmasi dalam versi macOS yang lebih lama), saya percaya tombol CPU dll akan masukgroup 1 of toolbar 1
** 2
Ini berlaku jika Anda pernah menyeret kolom PID di kolom Activity ke posisi yang berbeda. Saya telah menyeret kolom PID ke posisi paling kiri sehingga pada baris ini, saya harus mengubah indeks ke1
:
set pid to value of text field 1 of aProcess
Kolom diberi nomor dari paling kiri, mulai dari 1. Jadi, sesuaikan indeks yang disorot di baris di atas sesuai jika diperlukan.