Я хотел бы знать, как я могу отличить поток ядра от пользовательского потока для процесса-сканера, который я создаю. Мне трудно найти хорошее определение обоих типов.
Я обнаружил, что потоки ядра не имеют собственной памяти, поэтому значения Vm * в /proc/ $pid/status отсутствуют, а stat on/proc/$pid/exe ничего не возвращает.
Итак, я решил, что могу идентифицировать потоки ядра, если процесс не имеет значений Vm * и не имеет номера inode. Я ошибался... мой script видит процессы php-cgi, которые когда-то идентифицируются как процессы ядра.
Если окажется, что большинство из этих неправильно идентифицированных процессов - это зомби, которые ушли через секунду. Поэтому я выполнил простую проверку, чтобы узнать, является ли статус "Z". Если это так, игнорируйте его. Это избавило меня от множества ложных срабатываний, но все же я получаю сообщения о процессах ядра php-cgi.
Может ли кто-нибудь сказать мне, как я могу отличить поток ядра от пользовательского потока правильно?