Зомби-процессы это "трудовые будни" любого процесса в linux. Когда мы запускаем какую-либо команду, ядро создает процесс, который делает системный вызов fork и создает тем самым дочерный процесс. В дочернем процессе вызывается системный вызов exec, который заменяет его код на код программы. Когда программа завершается, она посылает exit, после чего освобождает ресурсы, а именно память и файловые дескрипторы, но запись остается в таблице процессов. В свою очередь родительский процесс должен послать системный вызов wait, считать код завершение программы и удалить ее из таблицы процессов. Промежуток времени после того, как дочерний процесс (программа) послала exit и родительский процесс еще не вызвал wait и есть состояние зомби.
Если по каким то причинам, родительский процесс не смог выполнить свою работу, мы можем завершить процесс зомби, убив родительский процесс или подключившись к нему через отладчик gdb и вызвать руками системный вызов wait.