Skip to main content

Process

The Process service provides methods for listing processes, getting process details, and sending signals to processes on target hosts. Access via client.Process.List(), client.Process.Get(), and client.Process.Signal().

Methods​

MethodDescription
List(ctx, hostname)List all running processes on the target
Get(ctx, hostname, pid)Get information about a process by PID
Signal(ctx, hostname, pid, opts)Send a signal to a process by PID

Request Types​

TypeFields
ProcessSignalOptsSignal (string, e.g. TERM, KILL)

Usage​

import "github.com/osapi-io/osapi/pkg/sdk/client"

c := client.New("http://localhost:8080", token)

// List all processes
resp, err := c.Process.List(ctx, "web-01")
for _, r := range resp.Data.Results {
for _, p := range r.Processes {
fmt.Printf("PID=%d name=%s cpu=%.1f%%\n",
p.PID, p.Name, p.CPUPercent)
}
}

// Get a specific process
resp, err := c.Process.Get(ctx, "web-01", 1234)
for _, r := range resp.Data.Results {
for _, p := range r.Processes {
fmt.Printf("PID=%d user=%s state=%s\n",
p.PID, p.User, p.State)
}
}

// Send TERM signal to a process
sigResp, err := c.Process.Signal(ctx, "web-01", 1234,
client.ProcessSignalOpts{Signal: "TERM"})
for _, r := range sigResp.Data.Results {
fmt.Printf("PID=%d signal=%s changed=%v\n",
r.PID, r.Signal, r.Changed)
}

// Broadcast process list to all hosts
resp, err := c.Process.List(ctx, "_all")

Example​

Permissions​

OperationPermission
List, Getprocess:read
Signalprocess:execute

Process management is supported on the Debian OS family (Ubuntu, Debian, Raspbian). On unsupported platforms (Darwin, generic Linux), operations return status: skipped.