process

package
v2.21.11 Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2021 License: BSD-3-Clause Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RLIMIT_CPU        int32 = 0
	RLIMIT_FSIZE      int32 = 1
	RLIMIT_DATA       int32 = 2
	RLIMIT_STACK      int32 = 3
	RLIMIT_CORE       int32 = 4
	RLIMIT_RSS        int32 = 5
	RLIMIT_NPROC      int32 = 6
	RLIMIT_NOFILE     int32 = 7
	RLIMIT_MEMLOCK    int32 = 8
	RLIMIT_AS         int32 = 9
	RLIMIT_LOCKS      int32 = 10
	RLIMIT_SIGPENDING int32 = 11
	RLIMIT_MSGQUEUE   int32 = 12
	RLIMIT_NICE       int32 = 13
	RLIMIT_RTPRIO     int32 = 14
	RLIMIT_RTTIME     int32 = 15
)

Resource limit constants are from /usr/include/x86_64-linux-gnu/bits/resource.h from libc6-dev package in Ubuntu 16.10

View Source
const PrioProcess = 0 // linux/resource.h

Variables

View Source
var (
	ErrorNoChildren        = errors.New("process does not have children")
	ErrorProcessNotRunning = errors.New("process does not exist")
)
View Source
var ClockTicks = 100 // default value
View Source
var PageSize = uint64(os.Getpagesize())

Functions

func PidExists

func PidExists(pid int32) (bool, error)

func PidExistsWithContext added in v2.18.10

func PidExistsWithContext(ctx context.Context, pid int32) (bool, error)

func Pids

func Pids() ([]int32, error)

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

func PidsWithContext added in v2.18.10

func PidsWithContext(ctx context.Context) ([]int32, error)

Types

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

func (MemoryInfoExStat) String

func (m MemoryInfoExStat) String() string

type MemoryInfoStat

type MemoryInfoStat struct {
	RSS    uint64 `json:"rss"`    // bytes
	VMS    uint64 `json:"vms"`    // bytes
	HWM    uint64 `json:"hwm"`    // bytes
	Data   uint64 `json:"data"`   // bytes
	Stack  uint64 `json:"stack"`  // bytes
	Locked uint64 `json:"locked"` // bytes
	Swap   uint64 `json:"swap"`   // bytes
}

func (MemoryInfoStat) String

func (m MemoryInfoStat) String() string

type MemoryMapsStat

type MemoryMapsStat struct {
	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) 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 PageFaultsStat added in v2.19.9

type PageFaultsStat struct {
	MinorFaults      uint64 `json:"minorFaults"`
	MajorFaults      uint64 `json:"majorFaults"`
	ChildMinorFaults uint64 `json:"childMinorFaults"`
	ChildMajorFaults uint64 `json:"childMajorFaults"`
}

type Process

type Process struct {
	Pid int32 `json:"pid"`
	// 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 NewProcessWithContext added in v2.21.11

func NewProcessWithContext(ctx context.Context, pid int32) (*Process, error)

func Processes added in v2.17.11

func Processes() ([]*Process, error)

Processes returns a slice of pointers to Process structs for all currently running processes.

func ProcessesWithContext added in v2.18.10

func ProcessesWithContext(ctx context.Context) ([]*Process, error)

func (*Process) Background added in v2.18.12

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

Background returns true if the process is in background, false otherwise.

func (*Process) BackgroundWithContext added in v2.18.12

func (p *Process) BackgroundWithContext(ctx context.Context) (bool, error)

func (*Process) CPUAffinity

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

CPUAffinity returns CPU affinity of the process.

func (*Process) CPUAffinityWithContext added in v2.18.10

func (p *Process) CPUAffinityWithContext(ctx context.Context) ([]int32, error)

func (*Process) CPUPercent added in v2.17.10

func (p *Process) CPUPercent() (float64, error)

CPU_Percent returns how many percent of the CPU time this process uses

func (*Process) CPUPercentWithContext added in v2.18.10

func (p *Process) CPUPercentWithContext(ctx context.Context) (float64, error)

func (*Process) Children

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

Children returns the children of the process represented as a slice of pointers to Process type.

func (*Process) ChildrenWithContext added in v2.18.10

func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error)

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) CmdlineSliceWithContext added in v2.18.10

func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error)

func (*Process) CmdlineWithContext added in v2.18.10

func (p *Process) CmdlineWithContext(ctx context.Context) (string, error)

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 means TCP, UDP or UNIX.

func (*Process) ConnectionsMax added in v2.19.9

func (p *Process) ConnectionsMax(max int) ([]net.ConnectionStat, error)

Connections returns a slice of net.ConnectionStat used by the process at most `max`.

func (*Process) ConnectionsMaxWithContext added in v2.19.9

func (p *Process) ConnectionsMaxWithContext(ctx context.Context, max int) ([]net.ConnectionStat, error)

func (*Process) ConnectionsWithContext added in v2.18.10

func (p *Process) ConnectionsWithContext(ctx context.Context) ([]net.ConnectionStat, error)

func (*Process) CreateTime

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

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

func (*Process) CreateTimeWithContext added in v2.18.10

func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error)

func (*Process) Cwd

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

Cwd returns current working directory of the process.

func (*Process) CwdWithContext added in v2.18.10

func (p *Process) CwdWithContext(ctx context.Context) (string, error)

func (*Process) Environ added in v2.21.11

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

Environ returns the environment variables of the process.

func (*Process) EnvironWithContext added in v2.21.11

func (p *Process) EnvironWithContext(ctx context.Context) ([]string, error)

func (*Process) Exe

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

Exe returns executable path of the process.

func (*Process) ExeWithContext added in v2.18.10

func (p *Process) ExeWithContext(ctx context.Context) (string, error)

func (*Process) Foreground added in v2.18.12

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

Foreground returns true if the process is in foreground, false otherwise.

func (*Process) ForegroundWithContext added in v2.18.12

func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error)

func (*Process) Gids

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

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

func (*Process) GidsWithContext added in v2.18.10

func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error)

func (*Process) Groups added in v2.20.7

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

Groups returns all group IDs(include supplementary groups) of the process as a slice of the int

func (*Process) GroupsWithContext added in v2.20.7

func (p *Process) GroupsWithContext(ctx context.Context) ([]int32, error)

func (*Process) IOCounters

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

IOCounters returns IO Counters.

func (*Process) IOCountersWithContext added in v2.18.10

func (p *Process) IOCountersWithContext(ctx context.Context) (*IOCountersStat, error)

func (*Process) IOnice

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

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

func (*Process) IOniceWithContext added in v2.18.10

func (p *Process) IOniceWithContext(ctx context.Context) (int32, error)

func (*Process) IsRunning

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

IsRunning returns whether the process is still running or not.

func (*Process) IsRunningWithContext added in v2.18.10

func (p *Process) IsRunningWithContext(ctx context.Context) (bool, error)

func (*Process) Kill

func (p *Process) Kill() error

Kill sends SIGKILL to the process.

func (*Process) KillWithContext added in v2.18.10

func (p *Process) KillWithContext(ctx context.Context) error

func (*Process) MemoryInfo

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

MemoryInfo returns generic process memory information, such as RSS and VMS.

func (*Process) MemoryInfoEx

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

MemoryInfoEx returns platform-specific process memory information.

func (*Process) MemoryInfoExWithContext added in v2.18.10

func (p *Process) MemoryInfoExWithContext(ctx context.Context) (*MemoryInfoExStat, error)

func (*Process) MemoryInfoWithContext added in v2.18.10

func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, error)

func (*Process) MemoryMaps

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

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

func (*Process) MemoryMapsWithContext added in v2.18.10

func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]MemoryMapsStat, error)

func (*Process) MemoryPercent

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

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

func (*Process) MemoryPercentWithContext added in v2.18.10

func (p *Process) MemoryPercentWithContext(ctx context.Context) (float32, error)

func (*Process) Name

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

Name returns name of the process.

func (*Process) NameWithContext added in v2.18.10

func (p *Process) NameWithContext(ctx context.Context) (string, error)

func (*Process) NetIOCounters

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

NetIOCounters returns NetIOCounters of the process.

func (*Process) NetIOCountersWithContext added in v2.18.10

func (p *Process) NetIOCountersWithContext(ctx context.Context, pernic bool) ([]net.IOCountersStat, error)

func (*Process) Nice

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

Nice returns a nice value (priority).

func (*Process) NiceWithContext added in v2.18.10

func (p *Process) NiceWithContext(ctx context.Context) (int32, error)

func (*Process) NumCtxSwitches

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

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

func (*Process) NumCtxSwitchesWithContext added in v2.18.10

func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitchesStat, error)

func (*Process) NumFDs

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

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

func (*Process) NumFDsWithContext added in v2.18.10

func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error)

func (*Process) NumThreads

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

NumThreads returns the number of threads used by the process.

func (*Process) NumThreadsWithContext added in v2.18.10

func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error)

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) OpenFilesWithContext added in v2.18.10

func (p *Process) OpenFilesWithContext(ctx context.Context) ([]OpenFilesStat, error)

func (*Process) PageFaults added in v2.19.9

func (p *Process) PageFaults() (*PageFaultsStat, error)

PageFaultsInfo returns the process's page fault counters.

func (*Process) PageFaultsWithContext added in v2.19.9

func (p *Process) PageFaultsWithContext(ctx context.Context) (*PageFaultsStat, error)

func (*Process) Parent

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

Parent returns parent Process of the process.

func (*Process) ParentWithContext added in v2.18.10

func (p *Process) ParentWithContext(ctx context.Context) (*Process, error)

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) PercentWithContext added in v2.18.10

func (p *Process) PercentWithContext(ctx context.Context, interval time.Duration) (float64, error)

func (*Process) Ppid

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

Ppid returns Parent Process ID of the process.

func (*Process) PpidWithContext added in v2.18.10

func (p *Process) PpidWithContext(ctx context.Context) (int32, error)

func (*Process) Resume

func (p *Process) Resume() error

Resume sends SIGCONT to the process.

func (*Process) ResumeWithContext added in v2.18.10

func (p *Process) ResumeWithContext(ctx context.Context) error

func (*Process) Rlimit

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

Rlimit returns Resource Limits.

func (*Process) RlimitUsage added in v2.17.10

func (p *Process) RlimitUsage(gatherUsed bool) ([]RlimitStat, error)

RlimitUsage returns Resource Limits. If gatherUsed is true, the currently used value will be gathered and added to the resulting RlimitStat.

func (*Process) RlimitUsageWithContext added in v2.18.10

func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ([]RlimitStat, error)

func (*Process) RlimitWithContext added in v2.18.10

func (p *Process) RlimitWithContext(ctx context.Context) ([]RlimitStat, error)

func (*Process) SendSignal

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

SendSignal sends a unix.Signal to the process.

func (*Process) SendSignalWithContext added in v2.18.10

func (p *Process) SendSignalWithContext(ctx context.Context, sig syscall.Signal) error

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 character is same within all supported platforms.

func (*Process) StatusWithContext added in v2.18.10

func (p *Process) StatusWithContext(ctx context.Context) (string, error)

func (Process) String

func (p Process) String() string

func (*Process) Suspend

func (p *Process) Suspend() error

Suspend sends SIGSTOP to the process.

func (*Process) SuspendWithContext added in v2.18.10

func (p *Process) SuspendWithContext(ctx context.Context) error

func (*Process) Terminal

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

Terminal returns a terminal which is associated with the process.

func (*Process) TerminalWithContext added in v2.18.10

func (p *Process) TerminalWithContext(ctx context.Context) (string, error)

func (*Process) Terminate

func (p *Process) Terminate() error

Terminate sends SIGTERM to the process.

func (*Process) TerminateWithContext added in v2.18.10

func (p *Process) TerminateWithContext(ctx context.Context) error

func (*Process) Tgid added in v2.18.10

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

Tgid returns thread group id of the process.

func (*Process) TgidWithContext added in v2.21.11

func (p *Process) TgidWithContext(ctx context.Context) (int32, error)

func (*Process) Threads

func (p *Process) Threads() (map[int32]*cpu.TimesStat, error)

func (*Process) ThreadsWithContext added in v2.18.10

func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesStat, error)

func (*Process) Times

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

Times returns CPU times of the process.

func (*Process) TimesWithContext added in v2.18.10

func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error)

func (*Process) Uids

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

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

func (*Process) UidsWithContext added in v2.18.10

func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error)

func (*Process) Username

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

Username returns a username of the process.

func (*Process) UsernameWithContext added in v2.18.10

func (p *Process) UsernameWithContext(ctx context.Context) (string, error)

type RlimitStat

type RlimitStat struct {
	Resource int32  `json:"resource"`
	Soft     int32  `json:"soft"` //TODO too small. needs to be uint64
	Hard     int32  `json:"hard"` //TODO too small. needs to be uint64
	Used     uint64 `json:"used"`
}

func (RlimitStat) String

func (r RlimitStat) String() string

type SignalInfoStat added in v2.17.10

type SignalInfoStat struct {
	PendingProcess uint64 `json:"pending_process"`
	PendingThread  uint64 `json:"pending_thread"`
	Blocked        uint64 `json:"blocked"`
	Ignored        uint64 `json:"ignored"`
	Caught         uint64 `json:"caught"`
}

Jump to

Keyboard shortcuts

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