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/retr0h/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.