Хитрость заключается в том, чтобы убедиться, что вы убиваете правильный процесс и только те, которые вам нужны. Звучит просто, но так много людей заблуждаются. Худший программный способ - сделать это по имени.
Итак, вы сказали, что не можете изменить родителя. Правильный способ, если бы вы могли это сделать, - это взять возвращаемое значение вызова fork (), поскольку он имеет дочерний PID. PID уникален, а имя (, которое, я думаю, вы делаете с ps aux | grep )не уникален.
Предполагая, что вы знаете PID родителя, pgrep -P может быть одним из способов сделать это. Это предполагает, что у вас есть один дочерний процесс, поскольку он будет соответствовать всем дочерним процессам родителя.
Как ни странно, killall соответствует возрасту, pgrep/pkill соответствует родительскому, но они не делают то, что делает другой; что-то исправить однажды, возможно.
Сегодня у меня есть немного времени, чтобы решить эту проблему. Если вы рассматриваете следующую сеть 172.18.0.0/24, следующие команды решили мою проблему:
iptables -t nat -A POSTROUTING -s 172.18.0.0/24 -d 172.18.0.0/24 -j ACCEPT
iptables -A FORWARD -i br0 -o br0 -j ACCEPT
Всем спасибо.