Skip to content

FRANDAVID/gopsutil

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gopsutil: psutil for golang

https://drone.io/github.com/shirou/gopsutil/status.png https://coveralls.io/repos/shirou/gopsutil/badge.png?branch=master

This is a port of psutil(http://pythonhosted.org/psutil/). This challenges porting all psutil functions on some architectures.

Available archtectures

  • FreeBSD/amd64
  • Linux/amd64
  • Linux/arm (raspberry pi)
  • Windows/amd64

(I do not have a darwin machine)

All works are implemented without cgo by porting c struct to golang struct.

Usage

import (
     "fmt"

     "github.com/shirou/gopsutil"
)

func main() {
     v, _ := gopsutil.VirtualMemory()

     // almost every return value is struct
     fmt.Printf("Total: %v, Free:%v, UsedPercent:%f%%\n", v.Total, v.Free, v.UsedPercent)

     // convert to JSON. String() is also implemented
     fmt.Println(d)
}

The output is below.

Total: 3179569152, Free:284233728, UsedPercent:84.508194%
{"total":3179569152,"available":492572672,"used":2895335424,"usedPercent":84.50819439828305, (snip)}

Document

see http://godoc.org/github.com/shirou/gopsutil

More info

To becomes more useful, add more information.

  • Hostinfo() (linux)
    • OS
    • Platform ex: ubuntu, arch
    • Platform family ex: debian
    • Platform Version ex: Ubuntu 13.10
  • CPUInfoStat() (linux, freebsd)
    • Processer
    • Vendor ID
    • Model name
    • cores
    • Mhz
    • etc...
  • LoadAvg() (linux, freebsd)
    • Load1
    • Load5
    • Load15

Some codes are ported some functions from Ohai. very thanks.

Current Status

  • done
    • cpu_times (linux, freebsd)
    • cpu_count (linux, freebsd, windows)
    • virtual_memory (linux, freebsd, windows)
    • swap_memory (linux, freebsd)
    • disk_partitions (linux, freebsd, windows)
    • disk_io_counters (linux)
    • disk_usage (linux, freebsd, windows)
    • net_io_counters (linux, freebsd, windows)
    • boot_time (linux, freebsd, windows(but little broken))
    • users (linux, freebsd)
    • pids (linux, freebsd)
    • pid_exists (linux, freebsd)
    • Process class
      • pid (linux, freebsd, windows)
      • ppid (linux, freebsd, windows)
      • name (linux)
      • cmdline (linux)
      • create_time (linux)
      • status (linux)
      • cwd (linux)
      • exe (linux, freebsd, windows)
      • uids (linux, freebsd)
      • gids (linux, freebsd)
      • terminal (linux, freebsd)
      • io_counters (linux)
      • nice (linux)
      • num_fds (linux)
      • num_ctx_switches (linux)
      • num_threads (linux, freebsd, windows)
      • cpu_times (linux)
      • memory_info (linux, freebsd)
      • memory_info_ex (linux)
      • memory_maps() (linux)
      • open_files (linux)
      • send_signal (linux, freebsd)
      • suspend (linux, freebsd)
      • resume (linux, freebsd)
      • terminate (linux, freebsd)
      • kill (linux, freebsd)
  • not yet
    • cpu_percent
    • cpu_times_percent
    • net_connections
    • Process class
      • username
      • ionice
      • rlimit
      • num_handlers
      • threads
      • cpu_percent
      • cpu_affinity
      • memory_percent
      • children
      • connections
      • is_running
  • future work
    • process_iter
    • wait_procs
    • Process class
      • parent (use ppid instead)
      • as_dict
      • wait

License

New BSD License (same as psutil)

Related works

I have referenced these great works.

How to Contributing

  1. Fork it
  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 new Pull Request

My engilsh is terrible, documentation or correcting comments are also welcome.

About

psutil for golang

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published