You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Shirou WAKAYAMA 45710b5c9d could not get coverage from test subdirectory. move back to top.
But it becomes messy again.
11 years ago
.gitignore initial import. 11 years ago
LICENSE update README and add LICENSE file. 11 years ago
README.rst implements NetIOCounters() on FreeBSD. 11 years ago
common.go rename parseFoo to mustParseFoo because these funcs are just a util func. 11 years ago
common_freebsd.go golint on Linux 11 years ago
common_windows.go implement net_io_counters on Windows. 11 years ago
cpu.go implements CPUInfoStat on FreeBSD. 11 years ago
cpu_freebsd.go rename parseFoo to mustParseFoo because these funcs are just a util func. 11 years ago
cpu_linux.go rename parseFoo to mustParseFoo because these funcs are just a util func. 11 years ago
cpu_test.go could not get coverage from test subdirectory. move back to top. 11 years ago
cpu_windows.go add CPUInfo placeholder on Windows. 11 years ago
disk.go implements String() which return as JSON to every structs. 11 years ago
disk_freebsd.go reduce memory alloc of append 11 years ago
disk_freebsd_amd64.go golint on Linux 11 years ago
disk_linux.go rename parseFoo to mustParseFoo because these funcs are just a util func. 11 years ago
disk_test.go could not get coverage from test subdirectory. move back to top. 11 years ago
disk_unix.go return value DiskUsageStat is now pointer 11 years ago
disk_windows.go golint on Linux 11 years ago
host.go add detecting virtualization system on Linux. 11 years ago
host_freebsd.go add detecting virtualization system on Linux. 11 years ago
host_freebsd_amd64.go golint on Linux 11 years ago
host_linux.go add detecting virtualization system on Linux. 11 years ago
host_linux_amd64.go golint on Linux 11 years ago
host_linux_arm.go now support linux/arm (raspberry pi) 11 years ago
host_test.go could not get coverage from test subdirectory. move back to top. 11 years ago
host_windows.go fix the type declaration on Windows 11 years ago
load.go implements String() which return as JSON to every structs. 11 years ago
load_freebsd.go fix return type. 11 years ago
load_linux.go change various func return type to pointer. 11 years ago
load_test.go could not get coverage from test subdirectory. move back to top. 11 years ago
load_windows.go fix windows 11 years ago
mem.go implements String() which return as JSON to every structs. 11 years ago
mem_freebsd.go rename parseFoo to mustParseFoo because these funcs are just a util func. 11 years ago
mem_linux.go remove duped line. 11 years ago
mem_test.go could not get coverage from test subdirectory. move back to top. 11 years ago
mem_windows.go change various func return type to pointer. 11 years ago
net.go rename json tag to more understandable on NetConnectionsStat 11 years ago
net_freebsd.go implements NetIOCounters() on FreeBSD. 11 years ago
net_linux.go rename parseFoo to mustParseFoo because these funcs are just a util func. 11 years ago
net_test.go could not get coverage from test subdirectory. move back to top. 11 years ago
net_windows.go fix build failure and panic on Windows. 11 years ago
process.go implements Process.NumCtxSwitches() on linux. 11 years ago
process_freebsd.go implements Process.NumCtxSwitches() on linux. 11 years ago
process_freebsd_amd64.go golint on Linux 11 years ago
process_linux.go rename parseFoo to mustParseFoo because these funcs are just a util func. 11 years ago
process_linux_amd64.go implement Process.Memory_info on linux. 11 years ago
process_linux_arm.go now support linux/arm (raspberry pi) 11 years ago
process_posix.go golint on Linux 11 years ago
process_posix_test.go could not get coverage from test subdirectory. move back to top. 11 years ago
process_test.go could not get coverage from test subdirectory. move back to top. 11 years ago
process_windows.go fix build failure and panic on Windows. 11 years ago
windows_memo.rst add windows implementation memo. 11 years ago

README.rst

gopsutil: psutil for golang
==============================

.. image:: https://drone.io/github.com/shirou/gopsutil/status.png
        :target: https://drone.io/github.com/shirou/gopsutil

.. image:: https://coveralls.io/repos/shirou/gopsutil/badge.png?branch=master
        :target: https://coveralls.io/r/shirou/gopsutil?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
-----------------------

- psutil: http://pythonhosted.org/psutil/
- dstat: https://github.com/dagwieers/dstat
- gosiger: https://github.com/cloudfoundry/gosigar/
- goprocinfo: https://github.com/c9s/goprocinfo
- go-ps: https://github.com/mitchellh/go-ps
- ohai: https://github.com/opscode/ohai/

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.