合 top命令user为数字的用户是什么
top命令里的user列为数字
top命令里,user列若为数字,则表示docker内用户的userid,可以使用docker内de/etc/passwd
文件查看。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | [root@lhrdb ~]# top top - 10:39:58 up 98 days, 20:41, 8 users, load average: 1.00, 1.29, 1.30 Tasks: 2537 total, 1 running, 2535 sleeping, 0 stopped, 1 zombie %Cpu(s): 2.3 us, 3.2 sy, 0.0 ni, 93.2 id, 0.0 wa, 0.0 hi, 0.2 si, 1.1 st KiB Mem : 65806012 total, 6232672 free, 30387236 used, 29186104 buff/cache KiB Swap: 31457276 total, 20609792 free, 10847484 used. 10913268 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2228520 www 20 0 548652 7332 1112 S 4.5 0.0 1154:31 gcrecover 3247744 70 20 0 3146128 338360 70196 S 4.5 0.5 1635:57 gaussdb 3251329 polkitd 20 0 272240 932 396 S 4.5 0.0 1009:20 postgres 3283854 10001 20 0 19.5g 661352 13408 S 4.5 1.0 11377:29 sqlservr 3763416 root 20 0 834952 183448 12868 S 4.5 0.3 4:09.28 gunicorn [root@lhrdb ~]# cat /etc/passwd| grep 70 [root@lhrdb ~]# cat /proc/3247744/cgroup 11:cpuset:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 10:perf_event:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 9:blkio:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 8:hugetlb:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 7:net_prio,net_cls:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 6:pids:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 5:cpuacct,cpu:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 4:freezer:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 3:memory:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 2:devices:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a 1:name=systemd:/docker/a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a [root@lhrdb ~]# docker exec -it a4da922d6feb091a09b0060a3730b6b18d431a8350656e36daad5a578de1da9a bash root@opengauss:/# root@opengauss:/# root@opengauss:/# root@opengauss:/# cat /etc/passwd| grep 70 omm:x:70:70::/home/omm:/bin/bash root@opengauss:/# |
其它
平时做应急的过程中,排查过程使中用htop或者top经常会发现很多user是数字的用户,但是去看/etc/passwd却没有对应的用户?并且进程/proc目录对应的目录和可执行文件都在不存在。本文通过实践解决了自己在工作中的对于一些技术细节上的疑惑。
以上面的user为33为例,所对应的pid为19390。
并且路径和文件都不存在,说明文件并不在宿主机上。
我们换成htop命令查看。发现进程链中这个apache2的父进程是containerd-shim-runc-v2,也就说明apache2是容器中的进程。
既然是容器中的文件那么宿主机无法打开也就可以解释了。
思考1:所以这里对应的user对应的数字33也就是容器中的用户?
进到容器中查看进程信息。
对应/etc/passwd的www-data用户的uid号。
就能说明为什么宿主机的命令下执行top命令看到的进程user为数字了。
思考2:为什么容器内的www-data不能在宿主机上显示,而是对应的uid呢?
我的猜测是这个uid其实是一个映射。为了证实我的想法。
以games用户为例对/etc/passwd修改,将其uid从12改为33测试。