Так как stat
возвращает поле «Device», мне было любопытно посмотреть, как можно использовать базовый stat()
библиотечный вызов для программного получения этой информации POSIX-совместимым способом.
Этот фрагмент кода C:
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
int main (int argc, const char *argv[]) {
struct stat info;
stat(argv[1], &info);
printf("min: %d maj: %d\n",
minor(info.st_dev),
major(info.st_dev)
);
return 0;
}
Предоставит идентификаторы основных и вспомогательных устройств для устройства, содержащего файл, указанный в командной строке ( argv[1]
). К сожалению, major()
и minor()
не POSIX, хотя на странице руководства утверждается, что они «присутствуют во многих других системах», кроме GNU / linux.
Затем вы можете получить соответствие между основным / второстепенным номером устройства и, например, узлом устройства /proc/diskstats
, и сопоставить его с точками монтирования /proc/mounts
, иначе. /etc/mtab
,
Так что утилита командной строки сделать это будет довольно просто.
tr
звонком с помощьюawk -F'% '...