github.com/crystal-community/hardware

Get CPU, Memory and Network informations of the running OS and its processes

76 stars
1 dependent
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  hardware:
    github: crystal-community/hardware
    version: ~> 0.5.3

Then run:

shards install

shard.yml

Crystal
>= 0.35, < 2
License
MIT
Authors
bararchy <bar.hofesh@safe-t.com>, Julien Reichardt <git@jrei.ch>

Dependencies

This version declares no dependencies.

README

# hardware

[![CI](https://github.com/crystal-community/hardware/workflows/CI/badge.svg)](https://github.com/crystal-community/hardware/actions?query=workflow%3ACI)
[![Documentation](https://github.com/crystal-community/hardware/workflows/Documentation/badge.svg)](https://crystal-community.github.io/hardware)
[![ISC](https://img.shields.io/badge/License-ISC-blue.svg?style=flat-square)](https://en.wikipedia.org/wiki/ISC_license)

A basic module to get CPU, memory and network informations of the current running OS and its processes.

Tested on Linux.

## Installation

Add this to your application's `shard.yml`:

```yaml
dependencies:
  hardware:
    github: crystal-community/hardware
```

## Documentation

The documentation is accessible at https://crystal-community.github.io/hardware.

It is generated with [crystal docs](https://crystal-lang.org/docs/conventions/documenting_code.html) in the `gh-pages` branch.

## Examples

```crystal
require "hardware"

memory = Hardware::Memory.new
memory.used         #=> 2731404
memory.percent.to_i #=> 32

cpu = Hardware::CPU.new
pid_stat = Hardware::PID.new.stat            # Default is Process.pid
app_stat = Hardware::PID.new("firefox").stat # Take the first matching PID

loop do
  sleep 1
  p cpu.usage!.to_i          #=> 17
  p pid_stat.cpu_usage!      #=> 1.5
  p app_stat.cpu_usage!.to_i #=> 4
end
```
## Development

### Docker

You can run the specs in a Docker container:

```sh
$ docker-compose up
$ docker-compose run spec
```

## Contributing

1. Fork it ( https://github.com/crystal-community/hardware/fork )
2. Create your feature branch (git checkout -b my-new-feature)
3. Commit your changes (git commit -am 'Add some feature')
4. Push to the branch (git push origin my-new-feature)
5. Create a new Pull Request

## Contributors

- [bararchy](https://github.com/bararchy) - creator, maintainer   
- [j8r](https://github.com/j8r) - maintainer