Как правило, отвечающий клиент должен получить sigterm и отключиться сам, тем самым завершив все его разветвленные дочерние процессы. Если, с другой стороны, клиент не отвечает, нормальный сигнал завершения, вероятно, не вызовет ответа.
Затем вы продолжаете посылать сигнал SIGKILL, который говорит самой системе «Сделать этот процесс остановленным сейчас», что он может делать большую часть времени, за исключением случаев, когда процесс находится в состоянии непрерывного сна, например, ожидание некоторого ввода-вывода. вход или аналогичный.
В этом случае, даже SIGKILL ничего не сделает с процессом; дочерний процесс, вероятно, будет в аналогичном состоянии отсталости.
Существует граничный случай, когда родительский процесс может просто красиво завершиться, но дочерний процесс не подлежит уничтожению. Тогда вы закончите с процессом зомби, который не может быть очищен, так как его отец ушел, но он не реагирует ни на что. Единственный способ избавиться от них - перезагрузка; однако в большинстве случаев они совершенно безвредны, поскольку единственное, что они делают, - это получают PID, в то время как сокет, который они пытались использовать, уже иссяк.
pkill -9
это более мощный, чемpkill
по любой причине.