Java-код для извлечения информации с жесткого диска из Linux - PullRequest
1 голос
/ 20 сентября 2011

Недавно мне было поручено разработать программу для мониторинга информации о жестких дисках (серийный, производитель, тип и т. Д.) С нескольких жестких дисков.В своем первоначальном исследовании я обнаружил, что это довольно легко сделать с помощью некоторого кода на C #, и таким образом создал тестовую программу.К сожалению, я обязан использовать ОС Linux, что означает, что c # не стоит на месте.

Мне было любопытно, если кто-нибудь знает, или мог бы указать мне правильное направление разработки приложения на Java / C / C ++это позволило бы достичь того же эффекта.Я знаю, что если вы используете Java, вы должны использовать JNI, и вы используете C / C ++ в этот момент независимо от этого.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

В зависимости от точной информации, которая вам нужна, использование JNI может и не понадобиться.

Linux предоставляет много информации об оборудовании, доступном в виртуальных файловых системах sysfs и procfs . Например, вы можете найти модель жесткого диска для первого диска в / sys / block / sda / device / model, которую вы должны прочитать на Java, как и любой другой файл.

Кроме того, вы можете посмотреть на вывод fdisk -l /dev/sda' and hdparm -I /dev/sdawhich both provide quite a bit of information. You can call these usingRuntime.exec () `и проанализировать вывод.

1 голос
/ 20 сентября 2011

Мне неизвестны какие-либо библиотеки Java, облегчающие вашу жизнь, но если вы хотите реализовать независимое от ОС решение, поддерживающее различные ОС, вам следует взглянуть на java.lang.Runtime , который позволяет вам выполнять внешние процессы. Вы можете сохранить карту для каждой ОС, определяющую команды (CLI) для получения необходимой информации. Это может быть проще, чем реализация множества собственных вызовов с использованием JNI:

Process p = Runtime.getRuntime().exec("df -h");
p.waitFor();

InputStream is = p.getInputStream();

/* work with command line output... */

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

...