Нужен исходный код для top и найдите связь между top и /proc/ directory в linux

Мне нужен был исходный код для top, который я нигде не мог найти, я хотел немного больше информации о том, что именно содержит каталог /proc. Я видел, что в нем есть папки с сериями 1, 2, 3 4, .... и в этих папках, кажется, есть согласованный набор файлов. Мне было интересно, если это каталоги процессов, запущенных на компьютере в данный момент.

Также я хотел знать, как именно TOP связан с этой папкой, потому что мне сказали, что TOP отслеживает процессы, выбирая данные из этих каталогов. Я хотел бы знать, какой именно файл является ТОПом, получающим использование ЦП определенного процесса из каталога. Если это слишком сложно, было бы замечательно, если бы вы просто указали мне на ту часть кода, откуда я мог бы это понять!

Спасибо за вашу помощь Шоувик

2 ответа

Решение

Procfs - это в основном файловая абстракция информации о системе и процессе.

В пронумерованных папках в настоящее время выполняются процессы с PID, связанным с именем папки.


Вы можете отслеживать, какие файлы были прочитаны сверху или любым другим процессом с помощью

strace -e open top

или на малине

strace -e openat top

или в более общем плане с помощью grep

strace top | grep open

например, U получить выход

...
openat(AT_FDCWD, "/proc/7353/stat", O_RDONLY|O_LARGEFILE) = 8
openat(AT_FDCWD, "/proc/7353/statm", O_RDONLY|O_LARGEFILE) = 8
...

Здесь вы видите, что верх открыл файл

/proc/[идентификатор]/stat

который содержит определенную информацию о процессе

top является частью procps, и да, эти числа являются идентификаторами процесса.

Другие вопросы по тегам