如何在linux中redirectps命令来查看除/ proc之外的其他文件夹

我使用docker集装箱,我已经安装主机/ proc容器/主机/ proc。 现在我想在docker容器中使用ps命令来查找/ host / proc中的进程而不是/ proc。 或者我怎么能正确的类似的实用程序到PS

/procpath在/bin/ps二进制文件的源代码树中进行了硬编码。 因此,您需要重新编译/bin/ps

按照以下步骤在安装host /proc的容器内重新编译/bin/ps ,并使用这个新的ps从容器中显示docker主机的进程列表:

在这个例子中,我不使用/host/proc but /prod来避免将path长度修改为procfs文件系统的挂载点(增加path长度可能在某些情况下触发运行时错误)。 我也使用基于OpenSUSE Leap 42.1的容器,因为你没有描述你正在使用的基础镜像。

1-在docker主机上,首先下载/ bin / ps源码:

 fenyo@myhost# mkdir /root/git fenyo@myhost# cd /root/git fenyo@myhost# git clone https://gitlab.com/procps-ng/procps.git fenyo@myhost# cd procps 

在“** / * "/procreplace"/proc by "/prod "/proc任何内容

3运行您的docker集装箱,在容器中安装procfs /prod

 fenyo@myhost# docker run -v /proc:/prod -v /root/git/procps:/root/git/procps -t -i --rm opensuse:42.1 bash 

在Docker容器里面,重新编译/bin/ps

 bash-4.2# cd /root/git/procps bash-4.2# zypper install -y gettext gettext-tools autoconf libtool pkg-config gcc make bash-4.2# ./autogen.sh bash-4.2# ./configure --without-ncurses bash-4.2# make 

现在,您可以使用/root/git/procps/ps/pscommand来replace/bin/ps ,以便使用/prod而不是/proc 。 使用pscommand ,您将从主机获取进程列表,而不是从容器中获取:

 bash-4.2# ps -auxgww USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 20064 3076 ? Ss 23:20 0:00 bash root 5199 0.0 0.0 33340 2996 ? R+ 23:24 0:00 ps -auxgww bash-4.2# /root/git/procps/ps/pscommand -auxgww USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 33620 3956 ? Ss Jul03 1:13 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 root 2 0.0 0.0 0 0 ? S Jul03 0:01 [kthreadd] root 3 0.0 0.0 0 0 ? R Jul03 4:44 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< Jul03 0:01 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S Jul03 15:27 [rcu_preempt] root 8 0.0 0.0 0 0 ? S Jul03 0:00 [rcu_sched] root 9 0.0 0.0 0 0 ? S Jul03 0:00 [rcu_bh] root 10 0.0 0.0 0 0 ? S Jul03 10:02 [rcuop/0] root 11 0.0 0.0 0 0 ? S Jul03 0:00 [rcuos/0] root 12 0.0 0.0 0 0 ? S Jul03 0:00 [rcuob/0] root 13 0.0 0.0 0 0 ? S Jul03 0:06 [migration/0] root 14 0.0 0.0 0 0 ? S Jul03 0:07 [watchdog/0] root 15 0.0 0.0 0 0 ? S Jul03 0:06 [watchdog/1] root 16 0.0 0.0 0 0 ? S Jul03 0:04 [migration/1] root 17 0.0 0.0 0 0 ? S Jul03 1:07 [ksoftirqd/1] root 19 0.0 0.0 0 0 ? S< Jul03 0:00 [kworker/1:0H] root 20 0.0 0.0 0 0 ? S Jul03 2:42 [rcuop/1] root 21 0.0 0.0 0 0 ? S Jul03 0:00 [rcuos/1] root 22 0.0 0.0 0 0 ? S Jul03 0:00 [rcuob/1] root 23 0.0 0.0 0 0 ? S Jul03 0:05 [watchdog/2] root 24 0.0 0.0 0 0 ? S Jul03 0:06 [migration/2] root 25 0.0 0.0 0 0 ? S Jul03 0:48 [ksoftirqd/2] root 27 0.0 0.0 0 0 ? S< Jul03 0:00 [kworker/2:0H] root 28 0.0 0.0 0 0 ? S Jul03 7:32 [rcuop/2] root 29 0.0 0.0 0 0 ? S Jul03 0:00 [rcuos/2] root 30 0.0 0.0 0 0 ? S Jul03 0:00 [rcuob/2] root 31 0.0 0.0 0 0 ? S Jul03 0:05 [watchdog/3] root 32 0.0 0.0 0 0 ? S Jul03 0:05 [migration/3] root 33 0.0 0.0 0 0 ? S Jul03 0:37 [ksoftirqd/3] [...]