forgejo-runner-optimiser/docs/background/identify-process-cgroup-by-pid.md
Manuel Ganter fd02242d5e
All checks were successful
ci / build (push) Successful in 31s
docs: move background documentation to docs/background
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 15:40:38 +01:00

1.2 KiB

Identify Process Cgroup by PID

TL;DR

You can identify a process's cgroup by reading /proc/<PID>/cgroup.

Outcome

Multiple methods to find which cgroup a process belongs to using its PID.

Conversation

Question: Can I identify the process's cgroup by having its PID?

Answer: Yes, here are the main methods:

Method 1: Read /proc/<PID>/cgroup

cat /proc/<PID>/cgroup

This shows all cgroup controllers the process belongs to. For example:

12:blkio:/user.slice
11:memory:/user.slice/user-1000.slice
...
0::/user.slice/user-1000.slice/session-1.scope

Method 2: Using ps with format options

ps -o pid,cgroup -p <PID>

Method 3: Using systemd-cgls

If you're on a systemd system:

systemd-cgls --unit <unit-name>
# or to see the whole tree
systemd-cgls

Method 4: Check cgroup v2 unified hierarchy

On cgroup v2 systems, check:

cat /proc/<PID>/cgroup
# Output will look like: 0::/user.slice/user-1000.slice/session-1.scope

The path after :: is the cgroup path under /sys/fs/cgroup/.

Quick one-liner

cat /proc/self/cgroup  # For current shell
cat /proc/$$/cgroup    # Also current shell
cat /proc/1234/cgroup  # For PID 1234