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 e4cee3c190 golint on freebsd. 11 years ago
.gitignore initial import. 11 years ago
LICENSE update README and add LICENSE file. 11 years ago
README.rst add contributing to README 11 years ago
common.go golint on Linux 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 golint on Linux 11 years ago
cpu_freebsd.go golint on freebsd. 11 years ago
cpu_linux.go golint on Linux 11 years ago
cpu_test.go golint on Linux 11 years ago
cpu_windows.go golint (not finished yet) 11 years ago
disk.go golint (not finished yet) 11 years ago
disk_freebsd.go golint on freebsd. 11 years ago
disk_freebsd_amd64.go golint on Linux 11 years ago
disk_linux.go golint on Linux 11 years ago
disk_test.go golint (not finished yet) 11 years ago
disk_unix.go golint on Linux 11 years ago
disk_windows.go golint on Linux 11 years ago
host.go implements users() on linux. 11 years ago
host_freebsd.go golint on freebsd. 11 years ago
host_freebsd_amd64.go golint on Linux 11 years ago
host_linux.go golint on Linux 11 years ago
host_linux_amd64.go golint on Linux 11 years ago
host_test.go golint (not finished yet) 11 years ago
host_windows.go golint (not finished yet) 11 years ago
load.go remove each metrics top struct such as CPU, all functions become flat. 11 years ago
load_freebsd.go golint on Linux 11 years ago
load_linux.go remove each metrics top struct such as CPU, all functions become flat. 11 years ago
load_test.go remove each metrics top struct such as CPU, all functions become flat. 11 years ago
load_windows.go fix windows 11 years ago
mem.go golint (not finished yet) 11 years ago
mem_freebsd.go golint on freebsd. 11 years ago
mem_linux.go golint on Linux 11 years ago
mem_test.go golint (not finished yet) 11 years ago
mem_windows.go golint (not finished yet) 11 years ago
net.go golint on Linux 11 years ago
net_linux.go golint on Linux 11 years ago
process.go golint on Linux 11 years ago
process_freebsd.go golint on freebsd. 11 years ago
process_freebsd_amd64.go golint on Linux 11 years ago
process_linux.go golint 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_test.go golint on Linux 11 years ago
process_test_posix.go golint on Linux 11 years ago
process_windows.go golint 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

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 (
      "github.com/shirou/gopsutil"
      "fmt"
      "encoding/json"
  )

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

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

      // convert to JSON
      d, _ := json.Marshal(v)
      fmt.Printf("%s\n", 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, windows)
    - Name (linux)
    - Cmdline (linux)
    - Create_time (linux)
    - Status (linux)
    - Cwd (linux)
    - Exe (linux, freebsd, windows)
    - Uids (linux)
    - Gids (linux)
    - Terminal (linux)
    - Nice (linux)
    - Num_fds (linux)
    - Num_threads (linux, windows)
    - Cpu_times (linux)
    - Memory_info (linux)
    - 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
    - io_counters
    - num_ctx_switches
    - 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.