Доброго времени суток, читатели, зрители моего канала 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 — вывести список устройств;
- имя устройства или точка монтирования — информация об устройстве.
Примеры запуска программы. Пусть она называется 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 тип файловой системы
Ну, пока всё!
Пишите свои предложения и замечания и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.