本文整理汇总了Golang中github.com/shirou/gopsutil/process.NewProcess函数的典型用法代码示例。如果您正苦于以下问题:Golang NewProcess函数的具体用法?Golang NewProcess怎么用?Golang NewProcess使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewProcess函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: createProcesses
func (p *Procstat) createProcesses() error {
var errstring string
var outerr error
pids, err := p.getAllPids()
if err != nil {
errstring += err.Error() + " "
}
for _, pid := range pids {
_, ok := p.pidmap[pid]
if !ok {
proc, err := process.NewProcess(pid)
if err == nil {
p.pidmap[pid] = proc
} else {
errstring += err.Error() + " "
}
}
}
if errstring != "" {
outerr = fmt.Errorf("%s", errstring)
}
return outerr
}
开发者ID:li-ang,项目名称:telegraf,代码行数:27,代码来源:procstat.go
示例2: waitForAnyPort
func (sc *ServiceCommand) waitForAnyPort(cancel <-chan struct{}, command *exec.Cmd) error {
for true {
time.Sleep(100 * time.Millisecond)
select {
case <-cancel:
return nil
default:
}
connections, err := net.Connections("all")
if err != nil {
return errors.WithStack(err)
}
proc, err := process.NewProcess(int32(command.Process.Pid))
if err != nil {
return errors.WithStack(err)
}
if hasPort(proc, connections) {
return nil
}
}
return errors.New("exited check loop unexpectedly")
}
开发者ID:yext,项目名称:edward,代码行数:25,代码来源:command.go
示例3: memoryUtil
func memoryUtil() (value int64, rate float32) {
pids := apachePID()
total := make([]int64, len(pids))
var sum int64
for i, pid := range pids {
k, _ := process.NewProcess(int32(pid))
rss, _ := k.MemoryInfo()
val := rss.RSS / 1024
total[i] = int64(val)
}
for k := 0; k < len(total); k++ {
sum = sum + total[k]
}
rat := (sum / 1024) * 100
fmt.Println(sum, rat)
return sum / 1024, float32(rat)
}
开发者ID:kgrvamsi,项目名称:go-tutorials,代码行数:30,代码来源:statsd.go
示例4: pidStats
// pidStats returns the resource usage stats per pid
func (e *UniversalExecutor) pidStats() (map[string]*cstructs.ResourceUsage, error) {
stats := make(map[string]*cstructs.ResourceUsage)
e.pidLock.RLock()
pids := make(map[int]*nomadPid, len(e.pids))
for k, v := range e.pids {
pids[k] = v
}
e.pidLock.RUnlock()
for pid, np := range pids {
p, err := process.NewProcess(int32(pid))
if err != nil {
e.logger.Printf("[DEBUG] executor: unable to create new process with pid: %v", pid)
continue
}
ms := &cstructs.MemoryStats{}
if memInfo, err := p.MemoryInfo(); err == nil {
ms.RSS = memInfo.RSS
ms.Swap = memInfo.Swap
ms.Measured = ExecutorBasicMeasuredMemStats
}
cs := &cstructs.CpuStats{}
if cpuStats, err := p.Times(); err == nil {
cs.SystemMode = np.cpuStatsSys.Percent(cpuStats.System * float64(time.Second))
cs.UserMode = np.cpuStatsUser.Percent(cpuStats.User * float64(time.Second))
cs.Measured = ExecutorBasicMeasuredCpuStats
// calculate cpu usage percent
cs.Percent = np.cpuStatsTotal.Percent(cpuStats.Total() * float64(time.Second))
}
stats[strconv.Itoa(pid)] = &cstructs.ResourceUsage{MemoryStats: ms, CpuStats: cs}
}
return stats, nil
}
开发者ID:nak3,项目名称:nomad,代码行数:36,代码来源:executor.go
示例5: createProcesses
func (spec *Specification) createProcesses() ([]*process.Process, error) {
var out []*process.Process
var errstring string
var outerr error
pids, err := spec.getAllPids()
if err != nil {
errstring += err.Error() + " "
}
for _, pid := range pids {
p, err := process.NewProcess(int32(pid))
if err == nil {
out = append(out, p)
} else {
errstring += err.Error() + " "
}
}
if errstring != "" {
outerr = fmt.Errorf("%s", errstring)
}
return out, outerr
}
开发者ID:rzagabe,项目名称:telegraf,代码行数:25,代码来源:procstat.go
示例6: pidStats
// pidStats returns the resource usage stats per pid
func (e *UniversalExecutor) pidStats() (map[string]*cstructs.ResourceUsage, error) {
stats := make(map[string]*cstructs.ResourceUsage)
e.pidLock.RLock()
pids := make([]*nomadPid, len(e.pids))
copy(pids, e.pids)
e.pidLock.RUnlock()
for _, pid := range pids {
p, err := process.NewProcess(int32(pid.pid))
if err != nil {
e.logger.Printf("[DEBUG] executor: unable to create new process with pid: %v", pid.pid)
continue
}
ms := &cstructs.MemoryStats{}
if memInfo, err := p.MemoryInfo(); err == nil {
ms.RSS = memInfo.RSS
ms.Swap = memInfo.Swap
}
cs := &cstructs.CpuStats{}
if cpuStats, err := p.Times(); err == nil {
cs.SystemMode = cpuStats.System
cs.UserMode = cpuStats.User
// calculate cpu usage percent
cs.Percent = pid.cpuStats.Percent(cpuStats.Total())
}
stats[strconv.Itoa(pid.pid)] = &cstructs.ResourceUsage{MemoryStats: ms, CpuStats: cs}
}
return stats, nil
}
开发者ID:iverberk,项目名称:nomad,代码行数:32,代码来源:executor.go
示例7: main
func main() {
flag.Parse()
pid, err := readIntFromFile("pid")
if err != nil {
fmt.Fprintf(os.Stderr, "error reading pid: %v\n", err)
os.Exit(254)
}
process, err := process.NewProcess(pid)
if err != nil {
fmt.Fprintf(os.Stderr, "unable to create process %d instance: %v\n", pid, err)
os.Exit(254)
}
if force {
if process.Kill() != nil {
fmt.Fprintf(os.Stderr, "unable to kill process %d: %v\n", pid, err)
os.Exit(254)
}
} else {
if process.Terminate() != nil {
fmt.Fprintf(os.Stderr, "unable to terminate process %d: %v\n", pid, err)
os.Exit(254)
}
}
}
开发者ID:intelsdi-x,项目名称:rkt,代码行数:27,代码来源:stop.go
示例8: GetComponent
// GetComponent gets statistics about this component
func GetComponent() *api.ComponentStats {
status := new(api.ComponentStats)
status.Uptime = uint64(time.Now().Sub(startTime).Seconds())
process, err := process.NewProcess(int32(os.Getpid()))
if err == nil {
if memory, err := process.MemoryInfo(); err == nil {
status.Memory = &api.ComponentStats_MemoryStats{
Memory: memory.RSS,
Swap: memory.Swap,
}
}
if cpu, err := process.Times(); err == nil {
status.Cpu = &api.ComponentStats_CPUStats{
User: float32(cpu.User),
System: float32(cpu.System),
Idle: float32(cpu.Idle),
}
}
}
status.Goroutines = uint64(runtime.NumGoroutine())
memstats := new(runtime.MemStats)
runtime.ReadMemStats(memstats)
status.GcCpuFraction = float32(memstats.GCCPUFraction)
return status
}
开发者ID:TheThingsNetwork,项目名称:ttn,代码行数:26,代码来源:stats.go
示例9: storeProc
// dockerData gather date from docker daemon directly (using DOCKER_HOST)
// and from proc/DOCKER_PID/status and publish those to conn
func storeProc(pidfile string, interval time.Duration) {
pid, err := loadPid(pidfile)
if err != nil {
warn(err)
return
}
p, err := process.NewProcess(int32(pid))
warn(err)
if err != nil {
return
}
// threads
threads, err := p.NumThreads()
warn(err)
if err != nil {
return
}
mi, err := p.MemoryInfo()
warn(err)
if err != nil {
return
}
procData := map[string]interface{}{"threads": threads, "vmsize": int(mi.VMS), "rss": int(mi.RSS)}
log.Println("proc = ", procData)
store("process", map[string]string{"pid": strconv.Itoa(int(pid))}, procData)
}
开发者ID:ppalucki,项目名称:appstress,代码行数:32,代码来源:proc.go
示例10: Status
func (sc *ServiceConfig) Status() ([]ServiceStatus, error) {
command, err := sc.GetCommand()
if err != nil {
return nil, errors.WithStack(err)
}
status := ServiceStatus{
Service: sc,
Status: "STOPPED",
}
if command.Pid != 0 {
status.Status = "RUNNING"
status.Pid = command.Pid
proc, err := process.NewProcess(int32(command.Pid))
if err != nil {
return nil, errors.WithStack(err)
}
epochStart, err := proc.CreateTime()
if err != nil {
return nil, errors.WithStack(err)
}
status.StartTime = time.Unix(epochStart/1000, 0)
status.Ports, err = sc.getPorts(proc)
if err != nil {
return nil, errors.WithStack(err)
}
}
return []ServiceStatus{
status,
}, nil
}
开发者ID:yext,项目名称:edward,代码行数:33,代码来源:serviceconfig.go
示例11: getProcCmdline
//Returns the command line slice for a given process name
func getProcCmdline(procname string) (cmd []string, err error) {
var proc *process.Process
pid := getProcPID(procname)
proc, err = process.NewProcess(int32(pid))
cmd, err = proc.CmdlineSlice()
return cmd, err
}
开发者ID:diogomonica,项目名称:actuary,代码行数:8,代码来源:checks.go
示例12: killAllChildren
func killAllChildren(pid int32) error {
p, err := process.NewProcess(pid)
if err != nil {
return err
}
processes := []*process.Process{p}
for i := 0; i < len(processes); i++ {
children, err := processes[i].Children()
if err != nil && err != process.ErrorNoChildren {
return err
}
processes = append(processes, children...)
}
for _, p := range processes {
osProcess, err := os.FindProcess(int(p.Pid))
if err != nil {
if err.Error() == "os: process already finished" {
continue
}
return err
}
err = osProcess.Kill()
if err != nil {
return err
}
}
return nil
}
开发者ID:nak3,项目名称:rkt,代码行数:28,代码来源:main.go
示例13: Run
// Run gathers ps information from gosigar.
func (p *Ps) Run() error {
pids := sigar.ProcList{}
err := pids.Get()
if err != nil {
return err
}
for _, pid := range pids.List {
state := sigar.ProcState{}
mem := sigar.ProcMem{}
time := sigar.ProcTime{}
if err := state.Get(pid); err != nil {
continue
}
if err := mem.Get(pid); err != nil {
continue
}
if err := time.Get(pid); err != nil {
continue
}
procData := make(map[string]interface{})
procData["Name"] = state.Name
procData["Pid"] = pid
procData["ParentPid"] = state.Ppid
procData["StartTime"] = time.FormatStartTime()
procData["RunTime"] = time.FormatTotal()
procData["MemoryResident"] = mem.Resident / 1024
procData["State"] = string(state.State)
gopsutilProcess, err := gopsutil_process.NewProcess(int32(pid))
if err != nil {
continue
}
mmaps, err := gopsutilProcess.MemoryMaps(false)
if err == nil {
procData["MemoryMaps"] = mmaps
}
ios, err := gopsutilProcess.IOCounters()
if err == nil {
procData["IOCounters"] = ios
}
ctxSwitches, err := gopsutilProcess.NumCtxSwitches()
if err == nil {
procData["CtxSwitches"] = ctxSwitches
}
if len(procData) > 0 {
p.Data[strconv.Itoa(pid)] = procData
}
}
return nil
}
开发者ID:actaeon,项目名称:resourced,代码行数:59,代码来源:ps.go
示例14: runCpuMonitor
func runCpuMonitor(monitor *CpuLoadMonitor) {
pid := os.Getpid()
process, _ := process.NewProcess(int32(pid))
for monitor.running {
monitor.sample, _ = process.CPUPercent(0)
monitor.cpu = monitor.alpha*monitor.sample + (1-monitor.alpha)*monitor.cpu
time.Sleep(monitor.samplingInterval)
}
}
开发者ID:dhoomakethu,项目名称:stress,代码行数:10,代码来源:stress_cpu.go
示例15: ProcessStats
func (ds *DaemonStat) ProcessStats() {
ds.PointsRate = float64(ds.PointsCounter) / float64(ds.Interval)
p, err := process.NewProcess(int32(os.Getpid()))
if err == nil {
ds.MemGauge, _ = p.MemoryInfo()
} else {
ds.MemGauge = nil
log.Errorf("%v", err)
Stat.ErrorIncr()
}
}
开发者ID:wojtekzw,项目名称:statsdaemon,代码行数:11,代码来源:stat.go
示例16: ProcessTable
func ProcessTable() map[int32]string {
res := make(map[int32]string)
pids, _ := process.Pids()
for i := 0; i < len(pids); i++ {
pid := pids[i]
proc, _ := process.NewProcess(pid)
cline, _ := proc.Cmdline()
res[pid] = cline
}
return res
}
开发者ID:rintcius,项目名称:go-suffuse,代码行数:12,代码来源:process.go
示例17: getCPU
func getCPU() {
stats, _ := process.NewProcess(int32(os.Getpid()))
for {
cpu, _ := stats.Percent(1 * time.Second)
if cpu > 30 {
log.Printf("CPU:%v\n", cpu)
go WatchCPU()
}
time.Sleep(1 * time.Second)
}
}
开发者ID:matishsiao,项目名称:ssdbproxy,代码行数:12,代码来源:ssdbproxy.go
示例18: dockerData
// dockerData gather date from docker daemon directly (using DOCKER_HOST)
// and from proc/DOCKER_PID/status and publish those to conn
func dockerData(tags string, conn net.Conn) {
if os.Getenv("DOCKER_HOST") == "" {
log.Fatal(`please provide eg. DOCKER_HOST="tcp://127.0.0.1:8080"`)
}
// pid
pidS := os.Getenv("DOCKER_PID")
if pidS == "" {
log.Fatal("cannot find docker deamon - please provide DOCKER_PID - try DOCKER_PID=`sudo lsof -t -sTCP:LISTEN -i :8080`")
}
pid, err := strconv.Atoi(pidS)
if err != nil {
log.Fatal(err)
}
log.Printf("docker pid=%d", pid)
// docker client
dockerClient, _ := docker.NewClientFromEnv()
for {
p, err := process.NewProcess(int32(pid))
// threads
threads, err := p.NumThreads()
if err != nil {
log.Fatal(err)
}
mi, err := p.MemoryInfo()
if err != nil {
log.Fatal(err)
}
rss := mi.RSS
vms := mi.VMS
// docker info
info, err := dockerClient.Info()
// log.Printf("info=%#v", info)
output := fmt.Sprintf("docker,driver=%s%s containers=%di,goroutines=%di,images=%di,threads=%di,vmsize=%di,rss=%di",
info.Get("Driver"), tags, info.GetInt("Containers"), info.GetInt("NGoroutines"), info.GetInt("Images"), threads, vms, rss)
n, err := conn.Write([]byte(output))
if err != nil {
log.Fatal(err)
}
log.Println(n, output)
time.Sleep(1 * time.Second)
}
}
开发者ID:ppalucki,项目名称:docker2influx,代码行数:49,代码来源:docker2influx.go
示例19: GetLoggingLevelByInspectingParent
func GetLoggingLevelByInspectingParent() (logrus.Level, error) {
ppid := os.Getppid()
process, err := process.NewProcess(int32(ppid))
if err != nil {
return logrus.WarnLevel, err
}
cmdline, err := process.Cmdline()
if err != nil {
return logrus.WarnLevel, err
}
if strings.Contains(cmdline, "-vv") {
return logrus.DebugLevel, nil
} else if strings.Contains(cmdline, "-v") {
return logrus.InfoLevel, nil
}
return logrus.WarnLevel, nil
}
开发者ID:xupeng,项目名称:advanced-ssh-config,代码行数:19,代码来源:logger.go
示例20: main
func main() {
flag.Parse()
pid, err := readIntFromFile("ppid")
if err != nil {
fmt.Fprintf(os.Stderr, "error reading pid: %v\n", err)
os.Exit(1)
}
process, err := process.NewProcess(pid)
if err != nil {
fmt.Fprintf(os.Stderr, "unable to create process %d instance: %v\n", pid, err)
os.Exit(1)
}
if force {
children, err := process.Children()
if err != nil {
fmt.Fprintf(os.Stderr, "cannot get child processes from %d: %v\n", pid, err)
os.Exit(1)
}
for _, child := range children {
if err := child.Kill(); err != nil {
fmt.Fprintf(os.Stderr, "unable to kill process %d: %v\n", child.Pid, err)
os.Exit(1)
}
}
if err := process.Kill(); err != nil {
fmt.Fprintf(os.Stderr, "unable to kill process %d: %v\n", pid, err)
os.Exit(1)
}
} else {
if process.Terminate() != nil {
fmt.Fprintf(os.Stderr, "unable to terminate process %d: %v\n", pid, err)
os.Exit(1)
}
}
}
开发者ID:nak3,项目名称:rkt,代码行数:40,代码来源:stop.go
注:本文中的github.com/shirou/gopsutil/process.NewProcess函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论