OSHI é um sistema operacional Java gratuito baseado em JNA (nativo) e uma biblioteca de informações de hardware. Não requer a instalação de nenhuma biblioteca nativa adicional e tem como objetivo fornecer uma implementação multiplataforma para recuperar informações do sistema, como versão do sistema operacional, processos, uso de memória e CPU, discos e partições, dispositivos, sensores, etc.
Plataformas suportadas
Windows • Linux • macOS • Unix (AIX, FreeBSD, OpenBSD, Solaris)
Download e gerenciamento de dependências
Versão estável
- JDK8:oshi -core-6.1.6
- JPMS:oshi -core-java11-6.1.6
- JDK6: oshi-core-3.14.0
Desenvolvimento Atual (SNAPSHOT) Download
- JDK8: oshi -core-6.1.7-SNAPSHOT
- JPMS: oshi-core-java11-6.1.7-SNAPSHOT
documento
- API (javadocs)
- Perguntas frequentes
- Registro de alterações
- Considerações de desempenho
- Quebrando mudanças nas versões principais
- saída de amostra
- Aplicações e projetos usando OSHI
uso
- Inclua o OSHI e suas dependências no seu classpath. Recomendamos fortemente que você adicione OSHI como uma dependência ao gerenciador de dependências do seu projeto (como Maven ou Gradle).
- Crie uma nova instância
SystemInfo
- Use getters from
SystemInfo
para acessar componentes de hardware ou sistema operacional, por exemplo:
<span style="color:#333333"><span style="background-color:#f5f5f5"><code class="language-java"><span style="color:#660066">SystemInfo</span><span style="color:#000000"> si </span><span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#660066">SystemInfo</span><span style="color:#666600">();</span>
<span style="color:#660066">HardwareAbstractionLayer</span><span style="color:#000000"> hal </span><span style="color:#666600">=</span><span style="color:#000000"> si</span><span style="color:#666600">.</span><span style="color:#000000">getHardware</span><span style="color:#666600">();</span>
<span style="color:#660066">CentralProcessor</span><span style="color:#000000"> cpu </span><span style="color:#666600">=</span><span style="color:#000000"> hal</span><span style="color:#666600">.</span><span style="color:#000000">getProcessor</span><span style="color:#666600">();</span></code></span></span>
Consulte SystemInfoTest.java para obter um exemplo . Para ver um exemplo de saída para sua máquina:
<span style="color:#333333"><span style="background-color:#f5f5f5"><code class="language-sh"><span style="color:#000000">git clone https</span><span style="color:#666600">://</span><span style="color:#000000">github</span><span style="color:#666600">.</span><span style="color:#000000">com</span><span style="color:#666600">/</span><span style="color:#000000">oshi</span><span style="color:#666600">/</span><span style="color:#000000">oshi</span><span style="color:#666600">.</span><span style="color:#000000">git </span><span style="color:#666600">&&</span><span style="color:#000000"> cd oshi
</span><span style="color:#666600">./</span><span style="color:#000000">mvnw test</span><span style="color:#666600">-</span><span style="color:#000000">compile </span><span style="color:#666600">-</span><span style="color:#000000">pl oshi</span><span style="color:#666600">-</span><span style="color:#000000">core exec</span><span style="color:#666600">:</span><span style="color:#000000">java \
</span><span style="color:#666600">-</span><span style="color:#660066">Dexec</span><span style="color:#666600">.</span><span style="color:#000000">mainClass</span><span style="color:#666600">=</span><span style="color:#008800">"oshi.SystemInfoTest"</span><span style="color:#000000"> \
</span><span style="color:#666600">-</span><span style="color:#660066">Dexec</span><span style="color:#666600">.</span><span style="color:#000000">classpathScope</span><span style="color:#666600">=</span><span style="color:#008800">"test"</span></code></span></span>
Algumas configurações podem ser definidas no arquivo oshi.properties ou manipuladas usando a classe GlobalConfig . Isso deve ser feito na inicialização, pois a configuração não é segura para threads e o OSHI não garante a releitura da configuração durante a operação.
Este oshi-demo
artefato inclui vários exemplos de prova de conceito do uso de OSHI para obter informações, incluindo uma GUI Swing básica.
Recursos suportados
- Sistemas de computador e firmware, substratos
- SO e versão/compilação
- CPUs físicas (Core) e lógicas (Hyper-Threading), grupos de processadores, nós NUMA
- Carga do sistema e por processador, contadores de ticks de uso, interrupções, tempo de atividade
- Tempo de atividade do processo, CPU, uso de memória, usuário/grupo, parâmetros de linha de comando, detalhes do thread
- Memória física e virtual usada/disponível
- Sistema de arquivos montado (tipo, espaço livre e total, opções, leitura e gravação)
- Unidades de disco (modelo, número de série, tamanho, leitura e gravação) e partições
- Interfaces de rede (IP, entrada/saída de largura de banda), parâmetros de rede, estatísticas TCP/UDP
- Status da bateria (porcentagem de capacidade, tempo restante, estatísticas de uso de energia)
- dispositivo USB
- Monitor conectado (com informações EDID), placa gráfica e placa de som
- Sensores em alguns hardwares (temperatura, velocidade do ventilador, tensão)
Exemplo de saída do OSHI
OSHI fornece saída para cada uma de suas interfaces diretamente por meio de métodos Java. Ao pesquisar periodicamente informações dinâmicas (por exemplo, a cada segundo), os usuários podem calcular e rastrear alterações.
Teste de informações do sistema
Você pode ver mais exemplos e executar SystemInfoTest e ver a saída completa do seu sistema clonando o projeto e construindo-o com Maven.
desempenho oshi
Além disso, este oshi-demo
módulo inclui uma classe OshiGui que implementa uma GUI Swing básica para fornecer sugestões para visualizações potenciais usando OSHI em UI, aplicativos de monitoramento ou alerta, conforme mostrado abaixo. Para uma GUI mais avançada baseada nesta abordagem, consulte o projeto MooInfo .
saída
Informações gerais sobre sistemas operacionais e hardware de sistema de computador:
Medindo os ticks (usuário, nice, sistema, inativo, iowait e irq) entre intervalos, a porcentagem de uso pode ser calculada. Informações para cada processador também são fornecidas.
As informações do processo incluem CPU e memória disponíveis para cada processo.
Informações sobre memória e arquivos de troca estão disponíveis.
Fornece estatísticas da bateria do sistema:
Power Sources:
Name: InternalBattery-0, Device Name: bq20z451,
RemainingCapacityPercent: 100.0%, Time Remaining: 5:42, Time Remaining Instant: 5:42,
Power Usage Rate: -16045.216mW, Voltage: 12.694V, Amperage: -1264.0mA,
Power OnLine: false, Charging: false, Discharging: true,
Capacity Units: MAH, Current Capacity: 7213, Max Capacity: 7315, Design Capacity: 7336,
Cycle Count: 6, Chemistry: LIon, Manufacture Date: 2019-06-11, Manufacturer: SMP,
SerialNumber: D869243A2U3J65JAB, Temperature: 30.46°C
O EDID de cada display é fornecido. Isso pode ser analisado com vários utilitários para obter informações detalhadas. OSHI fornece um resumo dos dados selecionados.
Displays:
Display 0:
Manuf. ID=SAM, Product ID=2ad, Analog, Serial=HA19, ManufDate=3/2008, EDID v1.3
41 x 27 cm (16.1 x 10.6 in)
Preferred Timing: Clock 106MHz, Active Pixels 3840x2880
Range Limits: Field Rate 56-75 Hz vertical, 30-81 Hz horizontal, Max clock: 140 MHz
Monitor Name: SyncMaster
Serial Number: H9FQ345476
Display 1:
Manuf. ID=SAM, Product ID=226, Analog, Serial=HA19, ManufDate=4/2007, EDID v1.3
41 x 26 cm (16.1 x 10.2 in)
Preferred Timing: Clock 106MHz, Active Pixels 3840x2880
Range Limits: Field Rate 56-75 Hz vertical, 30-81 Hz horizontal, Max clock: 140 MHz
Monitor Name: SyncMaster
Serial Number: HMCP431880
Exibe o disco e o uso (tempos de leitura, gravação e transferência) e pode mapear partições para sistemas de arquivos.
Disks:
disk0: (model: SanDisk Ultra II 960GB - S/N: 161008800550) size: 960.2 GB, reads: 1053132 (23.0 GiB), writes: 243792 (11.1 GiB), xfer: 73424854 ms
|-- disk0s1: EFI (EFI System Partition) Maj:Min=1:1, size: 209.7 MB
|-- disk0s2: Macintosh HD (Macintosh SSD) Maj:Min=1:2, size: 959.3 GB @ /
disk1: (model: Disk Image - S/N: ) size: 960.0 GB, reads: 3678 (60.0 MiB), writes: 281 (8.6 MiB), xfer: 213627 ms
|-- disk1s1: EFI (EFI System Partition) Maj:Min=1:4, size: 209.7 MB
|-- disk1s2: Dropbox (disk image) Maj:Min=1:5, size: 959.7 GB @ /Volumes/Dropbox
As leituras dos sensores estão disponíveis com alguns hardwares (consulte as notas na API ).
Sensors:
CPU Temperature: 69.8°C
Fan Speeds:[4685, 4687]
CPU Voltage: 3.9V
Os dispositivos USB conectados podem ser listados:
USB Devices:
AppleUSBEHCI
|-- Root Hub Simulation Simulation (Apple Inc.)
|-- IOUSBHostDevice
|-- IR Receiver (Apple Computer, Inc.)
|-- USB Receiver (Logitech)
AppleUSBEHCI
|-- Root Hub Simulation Simulation (Apple Inc.)
|-- FaceTime HD Camera (Built-in) (Apple Inc.) [s/n: DJHB1V077FDH5HL0]
|-- IOUSBHostDevice
|-- Apple Internal Keyboard / Trackpad (Apple Inc.)
|-- BRCM2070 Hub (Apple Inc.)
|-- Bluetooth USB Host Controller (Apple Inc.)
AppleUSBEHCI
|-- Root Hub Simulation Simulation (Apple Inc.)
|-- IOUSBHostDevice
|-- Apple Thunderbolt Display (Apple Inc.) [s/n: 162C0C25]
|-- Display Audio (Apple Inc.) [s/n: 162C0C25]
|-- FaceTime HD Camera (Display) (Apple Inc.) [s/n: CCGCAN000TDJ7DFX]
|-- USB2.0 Hub
|-- ANT USBStick2 (Dynastream Innovations) [s/n: 051]
|-- Fitbit Base Station (Fitbit Inc.)