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?

Jawaban:


52

Anda harus dapat menjalankan perintah sudo killall Python.

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


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"

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.


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.


2
pkill -f "process name"

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.