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
WAKAYAMA Shirou 755f65b5f3 add net_windows.go as placeholder. 11 years ago
.gitignore initial import. 11 years ago
LICENSE update README and add LICENSE file. 11 years ago
README.rst add coveralls.io badge. 11 years ago
common.go fix func exporting. 11 years ago
common_freebsd.go golint on Linux 11 years ago
common_windows.go change to use (modified version of ) github.com/AllenDang/w32 on windows 11 years ago
cpu.go implements String() which return as JSON to every structs. 11 years ago
cpu_freebsd.go golint on freebsd. 11 years ago
cpu_linux.go reduce memory alloc of append 11 years ago
cpu_test.go add test about String(). 11 years ago
cpu_windows.go golint (not finished yet) 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 reduce memory alloc of append 11 years ago
disk_test.go add test about String(). 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 implements String() which return as JSON to every structs. 11 years ago
host_freebsd.go add net_freebsd.go as placeholder. 11 years ago
host_freebsd_amd64.go golint on Linux 11 years ago
host_linux.go reduce memory alloc of append 11 years ago
host_linux_amd64.go golint on Linux 11 years ago
host_test.go add test about String(). 11 years ago
host_windows.go add net_windows.go as placeholder. 11 years ago
load.go implements String() which return as JSON to every structs. 11 years ago
load_freebsd.go golint on Linux 11 years ago
load_linux.go change various func return type to pointer. 11 years ago
load_test.go add test about String(). 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 change various func return type to pointer. 11 years ago
mem_linux.go change various func return type to pointer. 11 years ago
mem_test.go add test about String(). 11 years ago
mem_windows.go change various func return type to pointer. 11 years ago
net.go forget to implements String() 11 years ago
net_freebsd.go add net_freebsd.go as placeholder. 11 years ago
net_linux.go change various func return type to pointer. 11 years ago
net_test.go add test about String(). 11 years ago
net_windows.go add net_windows.go as placeholder. 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 implements Process.NumCtxSwitches() on linux. 11 years ago
process_linux_amd64.go implement Process.Memory_info on linux. 11 years ago
process_posix.go golint on Linux 11 years ago
process_posix_test.go fix func exporting. 11 years ago
process_test.go add test about String(). 11 years ago
process_windows.go implements Process.NumCtxSwitches() on linux. 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
- 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


Current Status
------------------

- done

  - cpu_times (linux, freebsd)
  - cpu_count (linux, freebsd, windows)
  - virtual_memory (linux, windows)
  - swap_memory (linux)
  - disk_partitions (linux, freebsd, windows)
  - disk_io_counters (linux)
  - disk_usage (linux, freebsd, windows)
  - net_io_counters (linux)
  - 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

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.