Programlar işbirliği yaparsa standart bir yöntem vardır. Run kill -- -42
42 ebeveyn sürecinin pid olduğu. Bu , işlem 42 (pid'den önceki eksi işareti işlem grubu anlamına gelir) tarafından yönlendirilen işlem grubundaki tüm işlemlere bir sinyal gönderir .
Normalde, python komut dosyanızı bir kabuk isteminden çalıştırırsanız ve basitçe çatallarsa gnuchess
, iki işlem aynı işlem grubunda kalmalıdır. Ancak durum böyle görünmüyor, çünkü Ctrl+ tüm ön plan süreç grubuna Cgönderiyor SIGINT
.
Gnuchess kendi süreç grubunda olabilir, çünkü kendisini bir oturum lideri yaptı (ama bunu neden yapacağını bilmiyorum) ya da çift çatallı (python gnuchess'i çatallayan bir kabuk çatal). Çift çatal muhtemelen önlenebilir, ancak kodunuzu görmeden nasıl söyleyemem.
gnuchess
Sürecin pid'ini bulmanın makul ve güvenilir ve POSIX uyumlu bir yolu
gnuchess_pids=$(ps -A -o pid= -o cmd= | awk '$2 ~ /(^|\/)gnuchess$/ {print $1}')
Belirli unix varyantları bunu başarmak için daha iyi yollara sahip olabilir pgrep
.
pkill
Bir işlemi adıyla öldürmek için kullanabilirsiniz , böylece sizinps aux | grep gnuchess
vekill -9 PID
sadece olabilirsinizpkill -9 gnuchess