Linux 的 PID 是进程和线程共享的吗?
输入 ps jfax
查看所有进程
╭─csy@Yoga14S-yjc /mnt/c/Users/17293╰─➤ ps jfax
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 1 0 0 ? -1 Sl 0 0:00 /init
1 7 7 7 ? -1 Ss 0 0:00 /init
7 8 7 7 ? -1 S 0 0:00 \_ /init
8 9 9 9 pts/0 809 Ss 1000 0:00 \_ -zsh
9 809 809 9 pts/0 809 R+ 1000 0:00 | \_ ps jfax
8 513 512 512 ? -1 S 113 0:00 \_ /usr/bin/pipexec -k -- [ D /usr/bin/etcd ] [ L /usr/bin/logger --tag etcd ] {D 1>L 0} {D 2>L 0}
513 515 512 512 ? -1 Sl 113 0:05 \_ /usr/bin/etcd
513 516 512 512 ? -1 S 113 0:00 \_ /usr/bin/logger --tag etcd
使用 top -p 515
命令查看进程号为 515
的详情
top - 21:33:28 up 6 min, 0 users, load average: 0.00, 0.00, 0.00Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 12272.9 total, 11875.0 free, 153.8 used, 244.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 11879.8 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
515 etcd 20 0 11.5g 39592 16376 S 2.3 0.3 0:06.42 etcd
按下 shift + H
查看改进程的所有线程
top - 21:34:33 up 7 min, 0 users, load average: 0.00, 0.00, 0.00Threads: 20 total, 0 running, 20 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 12272.9 total, 11874.5 free, 154.2 used, 244.2 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 11879.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
518 etcd 20 0 11.5g 39592 16376 S 0.7 0.3 0:00.51 etcd
528 etcd 20 0 11.5g 39592 16376 S 0.7 0.3 0:00.65 etcd
517 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:01.48 etcd
519 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:00.57 etcd
520 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:00.65 etcd
524 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:00.68 etcd
527 etcd 20 0 11.5g 39592 16376 S 0.3 0.3 0:00.47 etcd
515 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.41 etcd
521 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.00 etcd
522 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.00 etcd
523 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.00 etcd
525 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.46 etcd
526 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.39 etcd
529 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.12 etcd
530 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.00 etcd
545 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.36 etcd
743 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.22 etcd
744 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.39 etcd
808 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.01 etcd
816 etcd 20 0 11.5g 39592 16376 S 0.0 0.3 0:00.09 etcd
可以看到有一堆的进程,并且每个线程都有一个 pid
请问,pid
不是 process id 的意思吗?进程的 id
号?
为什么线程也和进程共享 pid
?
参考文章:
进程和线程之间有什么根本性的区别?
回答:
Stack Overflow上有相关的讨论,你可以参考一下这个:https://stackoverflow.com/que...
简单来说,从用户的角度所有线程都共享一个pid,但是从内核的角度每个线程都有独立的pid(虽然应该叫thread id更为合适)。你的截图里面有些是从用户角度来展示的,有些是从内核角度展示的。
以上是 Linux 的 PID 是进程和线程共享的吗? 的全部内容, 来源链接: utcz.com/p/938229.html