Найти в Дзене

Программирование на языке Python. Получение статистики занятости дисков с помощью библиотеки psutil

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Библиотеке psutil и информация о дисках

Я обещал, что вернусь к библиотеке psutil. Сегодня пример использования этой библиотеки для определения загруженности дисковых устройств.

Основу для получения информации о дисках является метод psutil.disk_partitions(all=False). Возвращает все смонтированные разделы и информацию о них. Информация возвращается в виде именованного кортежа. Например, один из дисков у меня

sdiskpart(device='/dev/sda', mountpoint='/', fstype='ext4', opts='rw,relatime', maxfile=255, maxpath=4096)

Пояснения по полям

  • device — путь к устройству (/dev/sda).
  • mountpoint — точка монтирования, например /home.
  • fstype — тип файловой системы.
  • opts — варианты подключения для диска.
  • maxfile — максимальная длина имени файлов.
  • maxpath — максимальная длина пути (path).

Опция all=False означает, что метод пытается вывести только физические устройства.

Ещё один важный метод psutil.disk_usage(path). Метод возвращает статистику использования того разделу, какому принадлежит указанный путь. Например у меня путь '/usr' будет соответствовать разделу с точкой монтирования '/'. Например

print(psutil.disk_usage('/usr')) даёт у меня

sdiskusage(total=235152510976, used=47841468416, free=175291396096, percent=21.4)

Ну, а теперь простой пример. Утилита имеет ключи

  • -p — вывести список физических устройств с точкой монтирования;
  • -p2 — вывести список устройств;
  • имя устройства или точка монтирования — информация об устройстве.
Полный текст программы см. ниже
Полный текст программы см. ниже
primer195.py

Примеры запуска программы. Пусть она называется p1.py. Предполагаем, что она запускаема, в противном случае нужно запускать python p1.py или python3 p1.py.

./p1.py -p

/dev/sda /
/dev/sdb1 /home
/dev/sdc /run/media/pirogov/4A1C-E99C

./p1.py -p2

udevfs /dev
runfs /run
/dev/sda /
proc /proc
sysfs /sys
securityfs /sys/kernel/security
tmpfs /dev/shm
devpts /dev/pts
cgroup2 /sys/fs/cgroup
pstore /sys/fs/pstore
/sys/fs/bpf
systemd-1 /proc/sys/fs/binfmt_misc
hugetlbfs /dev/hugepages
mqueue /dev/mqueue
debugfs /sys/kernel/debug
tracefs /sys/kernel/tracing
fusectl /sys/fs/fuse/connections
configfs /sys/kernel/config
tmpfs /tmp
/dev/sdb1 /home
tmpfs /run/user/500
gvfsd-fuse /run/user/500/gvfs
binfmt_misc /proc/sys/fs/binfmt_misc
/dev/sdc /run/media/pirogov/4A1C-E99C

./p1.py /

/dev/sda
224258.91M
45625.18M
167170.9M
21.4% занято
ext4 тип файловой системы

./p1.py /dev/sdc

/dev/sdc
14740.86M
146.65M
14594.21M
1.0% занято
vfat тип файловой системы

Ну, пока всё!

Пишите свои предложения и замечания и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Мне бесполезно вам что-то рассказывать, так как на вашем диске нет свободного места
Мне бесполезно вам что-то рассказывать, так как на вашем диске нет свободного места