Я хочу получить свободный размер жесткого диска в удаленной системе с помощью ssh.
Я нашел следующие способы:1-do it via command line: hdd's totalsize - sum of partitions size on that hdd + sum of free spaces on all partitions on that hdd;
С этим способом есть некоторые проблемы.
Во-первых, я предпочитаю не использовать команды, т.к. это усложнится, будет полно конвертации типов друг в друга. например, строка для плавания и ... во-вторых, с запущенной командой у меня не может быть свободного места на несмонтированных разделах.
третья проблема в том, что может быть размонтирован сам жесткий диск! другой способ:2-using statvfs structure.
Опять же, с этой структурой вы можете смонтировать свободное место на жестком диске. код, который я использую:
#include <stdio.h>
#include <sys/statvfs.h>
int main(int argc, const char *argv[])
{
const unsigned int GB = (1024 * 1024) * 1024;
struct statvfs buffer;
int ret = statvfs(argv[1], &buffer);
if (!ret) {
const double total = (double)(buffer.f_blocks * buffer.f_bsize) / GB;
const double available = (double)(buffer.f_bfree * buffer.f_bsize) / GB;
const double used = total - available;
const double usedPercentage = (double)(used / total) * (double)100;
printf("Total: %f --> %.0f\n", total, total);
printf("Available: %f --> %.0f\n", available, available);
printf("Used: %f --> %.1f\n", used, used);
printf("Used Percentage: %f --> %.0f\n", usedPercentage, usedPercentage);
}
return ret;
}
Я видел эту ссылку: Получить свободное место на жестком диске в Linux
но выходные данные stat не похожи на числа, которые я вижу в выводе команды df.
Я использую Qt, и моя ОС — Ubuntu 18.04.
когда я запускаю этот код, я получаю это:
heydari.f@swkb-dev2:~/projects/cpptest/build-cpptest-Desktop-Debug$ ./cpptest .
Total: 31.570432 --> 32
Available: 15.594684 --> 16
Used: 15.975748 --> 16.0
Used Percentage: 50.603513 --> 51
и мой вывод df выглядит следующим образом:
heydari.f@swkb-dev2:~$ df -H ~/projects/cpptest/build-cpptest-Desktop-Debug
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 32G 16G 14G 54% /
РЕДАКТИРОВАТЬ:
heydari.f@swkb-dev2:~/projects/cpptest/build-cpptest-Desktop-Debug$ ./cpptest .
Total: 31.570432 --> 32
Available: 13.967569 --> 14
Used: 17.602863 --> 17.6
Used Percentage: 55.757435 --> 56