Нужен исходный код для 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, и да, эти числа являются идентификаторами процесса.