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