package main import ( gocontext "context" "fmt" "os" "text/tabwriter" "github.com/containerd/containerd/api/services/execution" "github.com/pkg/errors" "github.com/urfave/cli" ) var psCommand = cli.Command{ Name: "ps", Usage: "list processes for container", Flags: []cli.Flag{ cli.StringFlag{ Name: "id", Usage: "id of the container", }, }, Action: func(context *cli.Context) error { id := context.String("id") if id == "" { return errors.New("container id must be provided") } pr := &execution.ProcessesRequest{ ContainerID: id, } tasks, err := getTasksService(context) if err != nil { return err } resp, err := tasks.Processes(gocontext.Background(), pr) if err != nil { return err } w := tabwriter.NewWriter(os.Stdout, 10, 1, 3, ' ', 0) fmt.Fprintln(w, "PID") for _, ps := range resp.Processes { if _, err := fmt.Fprintf(w, "%d\n", ps.Pid, ); err != nil { return err } } if err := w.Flush(); err != nil { return err } return nil }, }