Иногда возникает необходимость посчитать количество потоков активно работает в Linux приложении.
Определить количество потоков с помощь /proc
Самый простой способ определить количество потоков какого либо процесса, использование /proc. Каталог экспортирует в виде текстовых файлов большое количество информации, относящейся к существующим процессам и системному оборудованию, таким как ЦП, прерывания, память, диск и т. д.
cat /proc/<pid>/status
Команда покажет подробную информацию о процессе с <pid>, включая состояние процесса, родительский PID, UID, GID, количество используемых дескрипторов файлов и количество переключений контекста, а так же общее количество потоков.
Для примера можно просмотреть процесс в PID 3647208
cat /proc/3647208/status
Из вывода видно, что процесс использует 102 потока.
В качестве альтернативы вы можете просто подсчитать количество каталогов, найденных в /proc/<pid>/task.
ls /proc/<pid>/task | wc
Для каждого потока, существует соответствующий каталог, созданный в /proc/<pid>/task, с именем, соответствующим его идентификатору потока. Таким образом, общее количество каталогов в /proc/<pid>/task представляет собой количество потоков.
Определить количество потоков с помощь ps
ps также может отображать отдельные потоки процесса (с опцией H). Следующая команда выведет общее количество потоков процесса. Параметр h необходим, чтобы скрыть заголовок.
ps hH p <pid> | wc -l