Bagaimana saya bisa membunuh proses dengan namanya?

44

Terkadang saya perhatikan bahwa prosesnya Pythonterhenti. Lalu saya akan membunuhnya melalui Monitor Aktivitas dan semuanya baik-baik saja.

Saya ingin membunuh proses itu di Terminal sebagai gantinya. Namun, mencari PIDsepertinya tidak perlu karena hanya ada satu proses dengan namanya Python.

Apakah mungkin untuk membunuh proses dengan nama uniknya?

gentmatt
sumber

Jawaban:

52

Anda harus dapat menjalankan perintah sudo killall Python.

Anda perlu menjalankan sebagai root karena Python milik root, bukan pengguna.

Matt Love
sumber
Saya melakukan itu:No matching processes belonging to you were found
gentmatt
1
Proses Python bukan milik pengguna Anda. Cobalah sebagai root gantinya: sudo killall Python.
HenningJ
1
@ HenningJ Sudo bekerja karena suatu alasan. Saya hanya melihat bahwa prosesnya bukan milik saya. Saya bisa membunuh proses tanpa sudoketika saya membunuhnya menggunakan itu PID. Mengapa?
gentmatt
1
Saya pikir itu karena menggunakan PID bukan khusus pengguna / root, sedangkan nama proses adalah. Saya akan mengedit jawaban ini untuk mencerminkan sudo.
Matt Love
Ini juga bekerja untuk beberapa proses yang identik namanya, nice
chrismarx
21
sudo killall -s SIGINT "process name"

Jika Anda tidak bisa menjadi sudo karena akan meminta kata sandi dan saya merasa Anda tidak menginginkannya dalam skrip. pkill datang untuk menyelamatkan :)

pkill -9 "process name"
Roshan Mehta
sumber
5

Anda dapat mematikan Aplikasi dengan menggunakan Activity Monitor.app, menjadi solusi GUI. Itu akan menjadi "kekuatan berhenti" yang sederhana. Namun, itu tidak selalu berhasil karena alasan yang berbeda dalam beberapa situasi!

Solusi baris perintah seperti yang disebutkan dalam komentar di atas memiliki lebih banyak opsi bagi pengguna. sudo killall Pythonatau jika itu adalah program-proses yang berjalan sudo killall /Applications/Whatever.appmemaksa proses untuk berhenti juga.

Anda juga dapat memaksa proses untuk berhenti, menggunakan PID yang ditugaskan . Dalam kasus Activity Monitor.app itu akan kill 25794ataukill -9 25794

masukkan deskripsi gambar di sini

Beberapa detail lebih lanjut:

Program kill di Terminal hanya memaksa keluar dari sebuah program, seolah-olah dengan remote control. (Ia bahkan berfungsi ketika Anda SSH ke Mac Anda dari lokasi yang jauh. Ikuti perintah kill dengan nomor ID proses (PID pendek) dari program yang ingin Anda hentikan.

Kecuali jika Anda juga menggunakan sudo, Anda dapat membunuh hanya program-program yang Anda "miliki" —yang berjalan di bawah akun Anda. (Sistem operasi itu sendiri - root - selalu menjalankan programnya sendiri, dan secara teknis memungkinkan orang lain, memutar dari jalan, menjalankan program mereka sendiri bahkan saat Anda menggunakan Mac!)

The -9bendera adalah “non-catchable, non-ignorable membunuh.” Dengan kata lain, ini merupakan pembunuh industri-kekuatan yang menerima tidak ada permohonan belas kasihan dari program Anda pembunuhan sedang.

v2r
sumber
5

Meskipun tidak menggunakan PID, saya menemukan berikut untuk menjadi cukup efisien:

ps aux | grep "String or name of process"

Baris ini mengembalikan sejumlah informasi tentang proses pencocokan, dan Anda bisa killatau apa pun dari sana.

soxman
sumber
2
pkill -f "process name"

Berdasarkan https://stackoverflow.com/a/22334807/1243763

Samir
sumber
1
Apakah ada pidof di macOS? Dan mengapa tidak menggunakan pkill yang tidak memiliki masalah dengan proses tambahan?
nohillside
setuju dan saya melewatkannya. Saya memiliki pidofbiner sebagai alias non-standar ps -e -o pid,args | grep -E "\b$1\b" | awk "{print \$1}" | tr '\n' ' '. Jadi, pkill -flebih masuk akal.
Samir