Cara menghentikan skrip Python secara manual yang berjalan terus-menerus di linux

19

Saya memiliki skrip Python yang sedang berjalan dan terus menerus membuang kesalahan ke file log.

Saya ingin mengedit skrip dan menjalankannya lagi, tetapi tidak tahu cara menghentikan skrip.

Saya saat ini login di Linux melalui Putty dan saya melakukan semua pengkodean di sana. Jadi, apakah ada perintah untuk menghentikan skrip python di linux?

Gunnar
sumber

Jawaban:

35

Anda harus menemukan id proses (pid). satu perintah untuk melakukan ini adalah

$> ps -ef

untuk membatasi hasil pada proses python, Anda dapat menangkap hasilnya

$> ps -ef | grep python

yang akan memberikan hasil seperti:

user      2430     1  0 Jul03 ?        00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd

kolom kedua adalah pid. kemudian gunakan perintah kill seperti itu:

$> kill -9 2430 (i.e. the pid returned)
olly_uk
sumber
Itulah tepatnya yang saya cari. Terima kasih
7

Temukan id proses (PID) dari skrip dan keluarkan a kill -9 PIDuntuk mematikan proses kecuali itu berjalan sebagai proses forground Anda di terminal dalam hal ini Anda dapat Contrl-C untuk membunuhnya.

Temukan PID dengan perintah ini:

ps -elf | grep python

Ini daftar semua proses python, pilih yang tepat dan catat PID-nya. Kemudian

kill -9 <whatever_the_PID_is>

akan membunuh prosesnya. Anda mungkin mendapatkan pesan tentang telah menghentikan proses pada tahap ini.

Atau, Anda dapat menggunakan topperintah untuk menemukan proses python. Cukup masukkan k(untuk membunuh) dan topprogram akan meminta Anda untuk PID dari proses untuk membunuh. Terkadang sulit untuk melihat semua proses yang Anda minati topkarena mereka dapat menggulir layar, saya pikir pspendekatannya lebih mudah / lebih baik.

Levon
sumber
4
Nah, sebelum menggunakan -9, saya akan membunuhnya "pelan" terlebih dahulu. Hanya jika itu tidak bereaksi, saya akan gunakan -9.
glglgl
Tidak terbiasa dengan istilah "pembunuhan ringan" ..
Levon
7

Coba baris sederhana ini, Ini akan menghentikan semua script.py:

pkill -9 -f script.py
trex
sumber
1
Ini jauh lebih baik daripada mencari PID secara manual jika nama skripnya unik.
FlippingBinary
4

Jika program adalah proses saat ini di shell Anda, mengetikkan Ctrl-C akan menghentikan program Python.

Ned Batchelder
sumber
Solusi Hebat, diperlukan ini untuk pengujian.
Kuzon
1

Di dunia yang sempurna, Anda akan membaca dokumentasi untuk skrip dan melihat sinyal mana yang harus digunakan untuk menghentikannya. Dalam kehidupan nyata, Anda mungkin ingin mengirimkannya sinyal TERM, pertama, mungkin menggunakan sinyal KILL jika mengabaikan TERM. Jadi, apa yang Anda lakukan adalah menemukan ID Proses, menggunakan perintah ps (seperti yang sudah dijelaskan seseorang). Lalu, Anda bisa berlari kill -TERM <pid>. Beberapa program akan membersihkan hal-hal, seperti file yang mungkin dibuka, ketika mereka mendapatkan sinyal seperti itu, jadi lebih baik untuk memulai dengan sesuatu seperti itu. Jika gagal, maka tidak banyak yang bisa dilakukan kecuali palu besar: kill -KILL <pid>. (Anda dapat menggunakan nilai numerik, mis. -KILL = -9, dan mereka mungkin tidak akan pernah berubah, tetapi secara teoritis mungkin lebih aman untuk menggunakan nama-nama)

jrl
sumber
0

Jika Anda tahu nama skripnya, Anda bisa mengurangi semua pekerjaan menjadi satu perintah:

ps -ef | grep "script_name" | awk '{print $2}' | xargs sudo kill

Jika Anda ingin memastikan itu adalah skrip python:

ps -ef | grep "python script_name" | awk '{print $2}' | xargs sudo kill

Jika Anda ingin membunuh semua skrip python:

ps -ef | grep "python" | awk '{print $2}' | xargs sudo kill

Saya kira Anda mendapatkan ide;)

Pengingat: Anda perlu mengutip "" nama skrip seperti pada contoh.

Yesus
sumber