Ada metode standar, jika program bekerja sama. Jalankan di kill -- -42mana 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 SIGINTke 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 gnuchessproses 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.
pkilluntuk membunuh proses dengan nama, sehingga Andaps aux | grep gnuchessdankill -9 PIDhanya bisa menjadipkill -9 gnuchess