process

package
v1.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 2, 2022 License: BSD-3-Clause Imports: 21 Imported by: 26

Documentation

Index

Constants

View Source
const (
	PrioProcess               = 0   // linux/resource.h
	ClockTicks                = 100 // C.sysconf(C._SC_CLK_TCK)
	WorldReadable os.FileMode = 4
)

Variables

View Source
var (
	CachedBootTime  = uint64(0)
	ErrorNoChildren = errors.New("process does not have children")
	PageSize        = uint64(os.Getpagesize())
)

Functions

func AllProcesses

func AllProcesses() (map[int32]*FilledProcess, error)

func PidExists

func PidExists(pid int32) (bool, error)

func Pids

func Pids() ([]int32, error)

Pids returns a slice of process ID list which are running now.

Types

type FilledProcess

type FilledProcess struct {
	Pid  int32
	Ppid int32
	// process namespaced PID
	NsPid   int32
	Cmdline []string
	// stat
	CpuTime     cpu.TimesStat
	Nice        int32
	CreateTime  int64
	OpenFdCount int32

	// status
	Name        string
	Status      string
	Uids        []int32
	Gids        []int32
	NumThreads  int32
	CtxSwitches *NumCtxSwitchesStat
	// statm
	MemInfo   *MemoryInfoStat
	MemInfoEx *MemoryInfoExStat
	// cwd
	Cwd string
	// exe
	Exe string
	// IO
	IOStat *IOCountersStat
	// Username (windows only)
	Username string
}

type IOCountersStat

type IOCountersStat struct {
	ReadCount  uint64 `json:"readCount"`
	WriteCount uint64 `json:"writeCount"`
	ReadBytes  uint64 `json:"readBytes"`
	WriteBytes uint64 `json:"writeBytes"`
}

func (IOCountersStat) String

func (i IOCountersStat) String() string

type MemoryInfoExStat

type MemoryInfoExStat struct {
	RSS    uint64 `json:"rss"`    // bytes
	VMS    uint64 `json:"vms"`    // bytes
	Shared uint64 `json:"shared"` // bytes
	Text   uint64 `json:"text"`   // bytes
	Lib    uint64 `json:"lib"`    // bytes
	Data   uint64 `json:"data"`   // bytes
	Dirty  uint64 `json:"dirty"`  // bytes
}

MemoryInfoExStat is different between OSes

type MemoryInfoStat

type MemoryInfoStat struct {
	RSS  uint64 `json:"rss"`  // bytes
	VMS  uint64 `json:"vms"`  // bytes
	Swap uint64 `json:"swap"` // bytes
}

func (MemoryInfoStat) String

func (m MemoryInfoStat) String() string

type MemoryMapSectionHeader

type MemoryMapSectionHeader struct {
	StartAddr  uintptr
	EndAddr    uintptr
	Permission MemoryMapSectionPermissions
	Offset     uint64
	Device     string
	Inode      uint64
}

type MemoryMapSectionPermissions

type MemoryMapSectionPermissions struct {
	Read    bool
	Write   bool
	Execute bool
	Private bool
	Shared  bool
}

type MemoryMapsStat

type MemoryMapsStat struct {
	MemoryMapSectionHeader

	Path         string `json:"path"`
	Rss          uint64 `json:"rss"`
	Size         uint64 `json:"size"`
	Pss          uint64 `json:"pss"`
	SharedClean  uint64 `json:"sharedClean"`
	SharedDirty  uint64 `json:"sharedDirty"`
	PrivateClean uint64 `json:"privateClean"`
	PrivateDirty uint64 `json:"privateDirty"`
	Referenced   uint64 `json:"referenced"`
	Anonymous    uint64 `json:"anonymous"`
	Swap         uint64 `json:"swap"`
}

func (*MemoryMapsStat) IsAnonymous

func (ms *MemoryMapsStat) IsAnonymous() bool

func (MemoryMapsStat) String

func (m MemoryMapsStat) String() string

String returns JSON value of the process.

type NumCtxSwitchesStat

type NumCtxSwitchesStat struct {
	Voluntary   int64 `json:"voluntary"`
	Involuntary int64 `json:"involuntary"`
}

func (NumCtxSwitchesStat) String

func (p NumCtxSwitchesStat) String() string

type OpenFilesStat

type OpenFilesStat struct {
	Path string `json:"path"`
	Fd   uint64 `json:"fd"`
}

func (OpenFilesStat) String

func (o OpenFilesStat) String() string

type Process

type Process struct {
	Pid   int32 `json:"pid"`
	NsPid int32 `json:"nspid"`
	// contains filtered or unexported fields
}

func NewProcess

func NewProcess(pid int32) (*Process, error)

NewProcess creates a new Process instance, it only stores the pid and checks that the process exists. Other method on Process can be used to get more information about the process. An error will be returned if the process does not exist.

func (*Process) CPUAffinity

func (p *Process) CPUAffinity() ([]int32, error)

CPUAffinity returns CPU affinity of the process.

Notice: Not implemented yet.

func (*Process) Children

func (p *Process) Children() ([]*Process, error)

Children returns a slice of Process of the process.

func (*Process) Cmdline

func (p *Process) Cmdline() (string, error)

Cmdline returns the command line arguments of the process as a string with each argument separated by 0x20 ascii character.

func (*Process) CmdlineSlice

func (p *Process) CmdlineSlice() ([]string, error)

CmdlineSlice returns the command line arguments of the process as a slice with each element being an argument.

func (*Process) Connections

func (p *Process) Connections() ([]net.ConnectionStat, error)

Connections returns a slice of net.ConnectionStat used by the process. This returns all kind of the connection. This measn TCP, UDP or UNIX.

func (*Process) CreateTime

func (p *Process) CreateTime() (int64, error)

CreateTime returns created time of the process in seconds since the epoch, in UTC.

func (*Process) Cwd

func (p *Process) Cwd() (string, error)

Cwd returns current working directory of the process.

func (*Process) Exe

func (p *Process) Exe() (string, error)

Exe returns executable path of the process.

func (*Process) Gids

func (p *Process) Gids() ([]int32, error)

Gids returns group ids of the process as a slice of the int

func (*Process) IOCounters

func (p *Process) IOCounters() (*IOCountersStat, error)

IOCounters returns IO Counters.

func (*Process) IOnice

func (p *Process) IOnice() (int32, error)

IOnice returns process I/O nice value (priority).

func (*Process) IsRunning

func (p *Process) IsRunning() (bool, error)

IsRunning returns whether the process is running or not. Not implemented yet.

func (*Process) Kill

func (p *Process) Kill() error

Kill sends SIGKILL to the process.

func (*Process) MemoryInfo

func (p *Process) MemoryInfo() (*MemoryInfoStat, error)

MemoryInfo returns platform in-dependend memory information, such as RSS, VMS and Swap

func (*Process) MemoryInfoEx

func (p *Process) MemoryInfoEx() (*MemoryInfoExStat, error)

MemoryInfoEx returns platform dependend memory information.

func (*Process) MemoryMaps

func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error)

MemoryMaps get memory maps from /proc/(pid)/smaps

func (*Process) MemoryPercent

func (p *Process) MemoryPercent() (float32, error)

MemoryPercent returns how many percent of the total RAM this process uses

func (*Process) Name

func (p *Process) Name() (string, error)

Name returns name of the process.

func (*Process) NetIOCounters

func (p *Process) NetIOCounters(pernic bool) ([]net.IOCountersStat, error)

NetIOCounters returns NetIOCounters of the process.

func (*Process) Nice

func (p *Process) Nice() (int32, error)

Nice returns a nice value (priority). Notice: gopsutil can not set nice value.

func (*Process) NumCtxSwitches

func (p *Process) NumCtxSwitches() (*NumCtxSwitchesStat, error)

NumCtxSwitches returns the number of the context switches of the process.

func (*Process) NumFDs

func (p *Process) NumFDs() (int32, error)

NumFDs returns the number of File Descriptors used by the process.

func (*Process) NumThreads

func (p *Process) NumThreads() (int32, error)

NumThreads returns the number of threads used by the process.

func (*Process) OpenFiles

func (p *Process) OpenFiles() ([]OpenFilesStat, error)

OpenFiles returns a slice of OpenFilesStat opend by the process. OpenFilesStat includes a file path and file descriptor.

func (*Process) Parent

func (p *Process) Parent() (*Process, error)

Parent returns parent Process of the process.

func (*Process) Percent

func (p *Process) Percent(interval time.Duration) (float64, error)

If interval is 0, return difference from last call(non-blocking). If interval > 0, wait interval sec and return diffrence between start and end.

func (*Process) Ppid

func (p *Process) Ppid() (int32, error)

Ppid returns Parent Process ID of the process.

func (*Process) Resume

func (p *Process) Resume() error

Resume sends SIGCONT to the process.

func (*Process) Rlimit

func (p *Process) Rlimit() ([]RlimitStat, error)

Rlimit returns Resource Limits.

func (*Process) SendSignal

func (p *Process) SendSignal(sig syscall.Signal) error

SendSignal sends a syscall.Signal to the process. Currently, SIGSTOP, SIGCONT, SIGTERM and SIGKILL are supported.

func (*Process) Status

func (p *Process) Status() (string, error)

Status returns the process status. Return value could be one of these. R: Running S: Sleep T: Stop I: Idle Z: Zombie W: Wait L: Lock The charactor is same within all supported platforms.

func (Process) String

func (p Process) String() string

func (*Process) Suspend

func (p *Process) Suspend() error

Suspend sends SIGSTOP to the process.

func (*Process) Terminal

func (p *Process) Terminal() (string, error)

Terminal returns a terminal which is associated with the process.

func (*Process) Terminate

func (p *Process) Terminate() error

Terminate sends SIGTERM to the process.

func (*Process) Threads

func (p *Process) Threads() (map[string]string, error)

Threads returns a map of threads

Notice: Not implemented yet. always returns empty map.

func (*Process) Times

func (p *Process) Times() (*cpu.TimesStat, error)

Times returns CPU times of the process.

func (*Process) Uids

func (p *Process) Uids() ([]int32, error)

Uids returns user ids of the process as a slice of the int

func (*Process) Username

func (p *Process) Username() (string, error)

Username returns a username of the process.

type RlimitStat

type RlimitStat struct {
	Resource int32 `json:"resource"`
	Soft     int32 `json:"soft"`
	Hard     int32 `json:"hard"`
}

func (RlimitStat) String

func (r RlimitStat) String() string

Directories

Path Synopsis
so

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL