Skip to content

容器里没有 ps 怎么办?

标签
开发/容器化
命令行/docker
运维/云原生/Docker
开发/容器化/Docker/Dockerfile
命令行/aws
基础设施/云服务商/亚马逊云/AWS
基础设施/应用容器/亚马逊云/AWS/ElaticContainerService/ECS
命令行/ps
操作系统/Debian
计算机/操作系统/Linux/内核/procfs
字数
461 字
阅读时间
3 分钟

今天去基于 node:20-slim 的容器里排查问题的时候发现容器里连 ps 都没有,想要观察当前运行的进程的时候会变的困难。

因为容器是部署在 AWS ECS 上的,没有办法像 Kubernetes 的 kubectl debug 那样可以简单轻松地复制出来一个共享的 sidecar 容器,所以我们只能硬着头皮解决一下这个问题了。

不过好在如果我们直接观察 Dockerfile 的话(如果需要看别的 Dockerfile 可以在 node - Official Image | Docker Hub 里点击其他的 Tag 然后 inspect),可以发现 node:20-slim 是基于 debian:bookworm-slim 构建的,这意味着我们起码能有 apt 可以用。

所以我们可以用 apt 安装 procps 补全 ps 缺失的问题:

shell
apt update && apt install procps

当然如果连 apt 都没有的话... 也许可以试试看 ps - Command to display only running processes in Linux - Unix & Linux Stack Exchange 介绍的:

shell
grep -w R /proc/[0-9]*/stat

或者参考一下 c - Programmatically read all the processes status from /proc - Stack Overflow

参考资料

延伸阅读

贡献者

页面历史

撰写