我想在来自Debian官方docker中心存储库的docker容器中执行ps命令:

$ docker run -ti debian:wheezy /bin/bash
root@51afd6b09af8:/# ps
bash: ps: command not found

当前回答

如果你不能安装procps包(没有适当的权限),你可以使用/proc目录。

前几个目录(以数字命名)是进程的pid。在目录中,您可以找到其他有用的信息,以了解哪个进程连接到每个PID。例如,可以使用cat命令查看“cmdline”文件,查看PID连接的是哪个进程。

$ ls /proc
1 10 11 ...

$ ls -1 /proc/22
attr
autogroup
auxv
cgroup
clear_refs
cmdline
...

$ cat /proc/22/cmdline 
/bin/sh

编辑- cmdline中的空格丢失,因此我们可以将cat输出管道到tr命令,例如:

$ cat /proc/1/cmdline | tr '\0' ' '
/sbin/init splash

其他回答

Kali用户修复bash: ps:命令不发现的问题是:

apt install procps

如果你不能安装procps包(没有适当的权限),你可以使用/proc目录。

前几个目录(以数字命名)是进程的pid。在目录中,您可以找到其他有用的信息,以了解哪个进程连接到每个PID。例如,可以使用cat命令查看“cmdline”文件,查看PID连接的是哪个进程。

$ ls /proc
1 10 11 ...

$ ls -1 /proc/22
attr
autogroup
auxv
cgroup
clear_refs
cmdline
...

$ cat /proc/22/cmdline 
/bin/sh

编辑- cmdline中的空格丢失,因此我们可以将cat输出管道到tr命令,例如:

$ cat /proc/1/cmdline | tr '\0' ' '
/sbin/init splash

如果你正在运行CentOS容器,你可以使用以下命令安装ps:

yum install -y procps

在Dockerfile上运行此命令:

RUN yum install -y procps

Ps没有安装在基本喘息映像中。在容器内尝试以下操作:

apt-get update && apt-get install procps

或者在Dockerfile中添加以下行:

RUN apt-get update && apt-get install -y procps && rm -rf /var/lib/apt/lists/*

使用船坞顶

docker top <container ID>