github.com/elastic/gosigar@v0.14.3/examples/ps/ps.go (about)

     1  // Copyright (c) 2012 VMware, Inc.
     2  
     3  package main
     4  
     5  import (
     6  	"fmt"
     7  	"strings"
     8  
     9  	"github.com/elastic/gosigar"
    10  )
    11  
    12  func main() {
    13  	pids := gosigar.ProcList{}
    14  	pids.Get()
    15  
    16  	// ps -eo pid,ppid,stime,time,rss,user,state,command
    17  	fmt.Print("  PID  PPID STIME     TIME    RSS USER            S COMMAND\n")
    18  
    19  	for _, pid := range pids.List {
    20  		state := gosigar.ProcState{}
    21  		mem := gosigar.ProcMem{}
    22  		time := gosigar.ProcTime{}
    23  		args := gosigar.ProcArgs{}
    24  
    25  		if err := state.Get(pid); err != nil {
    26  			continue
    27  		}
    28  		if err := mem.Get(pid); err != nil {
    29  			continue
    30  		}
    31  		if err := time.Get(pid); err != nil {
    32  			continue
    33  		}
    34  		if err := args.Get(pid); err != nil {
    35  			continue
    36  		}
    37  
    38  		fmt.Printf("%5d %5d %s %s %6d %-15s %c %s\n",
    39  			pid, state.Ppid,
    40  			time.FormatStartTime(), time.FormatTotal(),
    41  			mem.Resident/1024, state.Username, state.State,
    42  			strings.Join(args.List, " "))
    43  	}
    44  }