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

62 lines
1.2 KiB
Markdown

# 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`
```bash
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
```bash
ps -o pid,cgroup -p <PID>
```
### Method 3: Using `systemd-cgls`
If you're on a systemd system:
```bash
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:
```bash
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
```bash
cat /proc/self/cgroup # For current shell
cat /proc/$$/cgroup # Also current shell
cat /proc/1234/cgroup # For PID 1234
```