Ada metode standar, jika program bekerja sama. Jalankan di kill -- -42
mana 42 adalah pid dari proses induk. Ini mengirimkan sinyal ke semua proses dalam kelompok proses yang dipimpin oleh proses 42 (tanda minus sebelum pid berarti kelompok proses).
Biasanya, jika Anda menjalankan skrip python Anda dari prompt shell dan itu hanya garpu gnuchess
, dua proses harus tetap dalam kelompok proses yang sama. Tapi ini tampaknya tidak menjadi masalah, karena Ctrl+ Cmengirim SIGINT
ke seluruh grup proses latar depan.
Gnuchess mungkin berada dalam grup prosesnya sendiri karena ia menjadikan dirinya sendiri sebagai pemimpin sesi (tapi saya tidak tahu mengapa ia melakukan hal ini), atau karena Anda telah menggandakannya (python memotong sebuah shell yang bercabang gnuchess). Garpu ganda mungkin bisa dihindari, tetapi saya tidak bisa memberi tahu Anda caranya tanpa melihat kode Anda.
Cara yang cukup andal dan sesuai POSIX untuk menemukan pid dari gnuchess
proses adalah
gnuchess_pids=$(ps -A -o pid= -o cmd= | awk '$2 ~ /(^|\/)gnuchess$/ {print $1}')
Varian unix tertentu mungkin memiliki cara yang lebih baik untuk mencapai ini, seperti pgrep
.
pkill
untuk membunuh proses dengan nama, sehingga Andaps aux | grep gnuchess
dankill -9 PID
hanya bisa menjadipkill -9 gnuchess