Cara membunuh proses zombie di mac

13

Bagaimana cara membunuh proses zombie atau menemukan proses induknya di Mac menggunakan Terminal?

eFrane
sumber
3
@soando Bukan duplikat, karena topik itu bukan tentang zombie. Tidak ada killsinyal yang berfungsi untuk zombie IIRC. Saya pernah mengalami ini sebelumnya.
Daniel Beck
Biasanya seseorang dapat membunuh zombie jika proses induknya diketahui tetapi ini membutuhkan pembunuhan yang juga, yang tidak selalu merupakan pilihan yang menyenangkan. Karena itu saya bertanya-tanya apakah ada solusi lain untuk ini.
eFrane

Jawaban:

16

Hack Saw berkata:

Sayangnya , tampaknya membunuh zombie adalah tentang membunuh orang tua , dan jika orang tua adalah / sbin / launchd, Anda dapat membunuhnya hanya dengan me-reboot.

Itu akan menjadi Ide yang Sangat Buruk untuk dibunuh launchd, tetapi Anda bisa mengatakannya kepada HUP.

Mencoba sudo kill -s HUP 1

Itu akan menyebabkan launchdmenginisialisasi ulang tanpa memulai ulang. Ini telah berhasil bagi saya di masa lalu (wrt. Menghapus entri zombie).

sean
sumber
3

Sayangnya , tampaknya membunuh zombie adalah tentang membunuh orang tua , dan jika orang tua adalah / sbin / launchd, Anda dapat membunuhnya hanya dengan me-reboot.

Saya mendapatkan zombie dari menggunakan Xcode, dan menghentikan simulator, dan itu menyerahkan zombie ke / sbin / launchd pribadi saya sendiri, yang tidak hilang ketika saya logout.

ps -xo pid, ppid, stat, perintah akan menunjukkan kepada Anda proses Anda, dengan ID induknya di kolom kedua.

Hack Saw
sumber
1

proses zombie sudah mati dan tidak bisa dibunuh. Mereka harus dihapus dari tabel proses secara otomatis ketika proses induk mati.

Mereka tidak memperlambat mesin Anda dan Anda bisa membiarkannya di sana (itu hanya entri dalam tabel proses).

Ada jumlah maksimum proses (Anda dapat memeriksanya sysctl kern.maxproc) dan proses zombie akan menguranginya (seperti yang dihitung).

Jika Anda mencapai batas ini, Anda tidak akan dapat membuat proses baru dan Anda akan dipaksa untuk reboot.

Matteo
sumber
"Harus dihapus", tetapi tidak selalu. Xcode mengerikan tentang meninggalkan proses zombie, dan mereka tidak dibersihkan bahkan jika Xcode mati / berhenti / terbunuh.
JRG-Developer
@ JRG-Developer Saya setuju tetapi mereka tidak masalah. Mereka tidak mengkonsumsi sumber daya apa pun.
Matteo
2
Sebenarnya itu adalah masalah ketika terlalu banyak yang dibuat dan garpu tidak dapat memulai proses baru dan Anda dipaksa untuk reboot.
Adam
2
Mereka adalah masalah ketika Anda ingin memulai kembali proses macet, dan menggunakannya lagi, tetapi tidak bisa tanpa me-reboot.
MarcusJ
4
Ketika Aplikasi masuk dalam keadaan itu maka Anda tidak dapat meluncurkannya kembali sampai entri lama dihapus. Itu tidak menggunakan sumber daya apa pun tetapi polusi tabel mencegah contoh baru dari peluncuran, karena itu Anda diblokir sampai Anda reboot.
George