网站地图    收藏   

主页 > 后端 > Golang >

golang操作进程包,获取进程和杀死进程等操作

来源:未知    时间:2022-04-10 12:41 作者:小飞侠 阅读:

[导读] golang操作进程包,获取进程和杀死进程等操作,推荐一个常用包 github.com/shirou/gopsutil/process 比如我要打印所有进程名字和ID如下所示: typePdatastruct{Pidint32Pnamestring}funcmain(){pName:=ProcessNa...

golang操作进程包,获取进程和杀死进程等操作,推荐一个常用包

"github.com/shirou/gopsutil/process"

比如我要打印所有进程名字和ID如下所示:

type Pdata struct {
	Pid   int32
	Pname string
}

func main() {
	pName := ProcessName()
	for _, v := range pName {
		fmt.Println("进程名:", v)
	}

}

/*
获取所有进程名,以数组返回
*/

func ProcessName() (pname []Pdata) {

	pids, _ := process.Pids()
	for _, pid := range pids {
		rtn := new(Pdata)
		rtn.Pid = pid
		pn, _ := process.NewProcess(pid)
		pName, _ := pn.Name()
		rtn.Pname = pName
		pname = append(pname, *rtn)
	}
	return pname
}

以下是此包常用方法

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 

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 

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 

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 

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

func Processes 

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

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

func ProcessesWithContext 

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

func (*Process) Background 

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

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

func (*Process) BackgroundWithContext 

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 

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

func (*Process) CPUPercent 

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

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

func (*Process) CPUPercentWithContext 

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 

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 

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

func (*Process) CmdlineWithContext 

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 

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 

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

func (*Process) ConnectionsWithContext 

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 

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 

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

func (*Process) Environ 

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

Environ returns the environment variables of the process.

func (*Process) EnvironWithContext 

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 

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

func (*Process) Foreground 

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

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

func (*Process) ForegroundWithContext 

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 

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

func (*Process) Groups 

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 

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 

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 

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 

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 

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 

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

func (*Process) MemoryInfoWithContext 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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

func (*Process) PageFaults 

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

PageFaultsInfo returns the process's page fault counters.

func (*Process) PageFaultsWithContext 

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 

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 

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 

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 

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

func (*Process) Rlimit 

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

Rlimit returns Resource Limits.

func (*Process) RlimitUsage 

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 

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

func (*Process) RlimitWithContext 

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 

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 

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 

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 

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 

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

func (*Process) Tgid 

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

Tgid returns thread group id of the process.

func (*Process) TgidWithContext 

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

func (*Process) Threads 

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

func (*Process) ThreadsWithContext 

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 

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 

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 

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 

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"`}

以上就是golang操作进程包,获取进程和杀死进程等操作全部内容,感谢大家支持自学php网。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论