Команды MacOS Activity Monitor (кэшированные файлы) в Python - PullRequest
0 голосов
/ 27 апреля 2020

Целью скрипта является создание журналов, которые отслеживают RAM, CPU, диск и сетевую статистику компьютеров MacOS.

Я успешно могу отображать статистику памяти с помощью psutil.virtual_memory () или Команда vm_stat в терминале.

psutil - https://psutil.readthedocs.io/en/latest/

Однако я хотел бы специально отобразить статистику «кэшированных файлов», показанную в Activity Monitor (ниже).

macOS activity monitor cached files

Я не хочу делать это гетто, например, очищать кеш, а затем измерять доступную оперативную память до и после и вычитать.

Вот с чем я играю:

import psutil

mem = str(psutil.virtual_memory())
mem = mem.replace(',', '')
mem = mem.split()

mem_total = mem[0].split("=")
mem_total = mem_total[1]
mem_total = round(int(mem_total)/1024**3, ndigits=1)

mem_used = mem[3].split("=")
mem_used = mem_used[1]
mem_used = round(int(mem_used)/1024**3, ndigits=1)

mem_free = mem[4].split("=")
mem_free = mem_free[1]
mem_free = round(int(mem_free)/1024**3, ndigits=1)

print(mem_total)
print(mem_used)
print(mem_free)

Спасибо

1 Ответ

1 голос
/ 27 апреля 2020

Некоторое время назад я запрограммировал инструмент, точно такой, как go с именем Tocco, и я бы посоветовал вам проверить его код на Github. Он также использует psutil для получения системной информации OSX. Вот указанная c часть кода, которую вы запрашиваете, используя psutil.virtual_memory():

import psutil

def humansize(nbytes):
    """ Appends prefix to bytes for human readability. """

    suffixes = ["B", "KB", "MB", "GB", "TB", "PB"]
    i = 0
    while nbytes >= 1024 and i < len(suffixes) - 1:
        nbytes /= 1024.0
        i += 1
    f = ("%.2f" % nbytes).rstrip("0").rstrip(".")
    return "%s %s" % (f, suffixes[i])

mem = psutil.virtual_memory()

print(humansize(mem.used))
print(humansize(mem.free))
print(humansize(mem.active))
print(humansize(mem.inactive))
print(humansize(mem.wired))

Выходы:

4.06 GB
16.57 MB
2.02 GB
1.95 GB
2.04 GB
...