回答:
プログラムが連携する場合、標準的な方法があります。実行kill -- -4242は、親プロセスのPIDです。これにより、プロセス42が先頭にあるプロセスグループ内のすべてのプロセスにシグナルが送信されます(pidの前のマイナス記号はプロセスグループを意味します)。
通常、Pythonスクリプトをシェルプロンプトから実行し、単純にforkするgnuchess場合、2つのプロセスは同じプロセスグループに残る必要があります。Ctrl+ はフォアグラウンドプロセスグループ全体にC送信SIGINTされるため、これは当てはまりません。
Gnuchessは、それ自体がセッションリーダーになったため(しかし、なぜこれを行うのかはわかりません)、またはそれを二重にフォークしたため(pythonがgnuchessをフォークするシェルをフォークする)、独自のプロセスグループに属している可能性があります。ダブルフォークはおそらく回避可能ですが、コードを確認せずにその方法を説明することはできません。
プロセスのPIDを見つける合理的な信頼性とPOSIX準拠の方法gnuchessは
gnuchess_pids=$(ps -A -o pid= -o cmd= | awk '$2 ~ /(^|\/)gnuchess$/ {print $1}')
特定のUNIXバリアントには、これを実現するためのより良い方法があるかもしれませんpgrep。
pkill名前でプロセスを殺すために、あなたのようにps aux | grep gnuchessとkill -9 PIDだけになることができますpkill -9 gnuchess