如何在高山中使用ps命令获取特定PID的进程名称

时间:2018-02-07 03:53:55

标签: process pid ps alpine

在基于ubuntu的docker / os

$ ps 
PID   USER     TIME   COMMAND
    1 postgres   0:00 postgres
   47 postgres   0:00 postgres: checkpointer process   
   48 postgres   0:00 postgres: writer process   
   49 postgres   0:00 postgres: wal writer process   
   50 postgres   0:00 postgres: autovacuum launcher process   
   51 postgres   0:00 postgres: stats collector process   
   52 postgres   0:00 postgres: bgworker: logical replication launcher

现在如果运行ps -p 1 -o user=,它会让我 PID 1 处理用户postgres

$ ps -p 1 -o user=
postgres

这是我在基于ubuntu的image / os

中可以做的

立即

我真的在寻找一种方法来为基于alpine的图像做同样的事情。我可以在哪里运行ps命令来获取 PID 1 处理USER。

我没有找到任何文档/提示。

1 个答案:

答案 0 :(得分:9)

默认情况下,高山图像中有ps非常剪切版本。这是忙碌的一个:

/ # ps --help
BusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.

Usage: ps [-o COL1,COL2=HEADER]

Show list of processes

    -o COL1,COL2=HEADER Select columns for display

它只能显示已定义列的输出。

如果您想使用未切割的ps,则需要先将其安装到alpine图像:

/ # apk add --no-cache procps
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/6) Installing libintl (0.19.8.1-r1)
(2/6) Installing ncurses-terminfo-base (6.0_p20171125-r0)
(3/6) Installing ncurses-terminfo (6.0_p20171125-r0)
(4/6) Installing ncurses-libs (6.0_p20171125-r0)
(5/6) Installing libproc (3.3.12-r3)
(6/6) Installing procps (3.3.12-r3)
Executing busybox-1.27.2-r7.trigger
OK: 13 MiB in 17 packages

现在,您可以使用它:

/ # ps -p 1 -o user=
root