摘要:PID 范围默认:1 ~ 32767(32 位系统)更大范围:1 ~ 4194304(64 位系统,受 /proc/sys/kernel/pid_max 控制)PID 1 永远是 init/systemd分配方式内核维护一个递增计数器来分配新 PID。如果到达
在日常运维或开发中,我们经常会看到进程号(PID)。很多人会问:
Linux 和 Windows 下,PID 是如何分配的?什么时候会出现 PID 重复?
今天我们就来一次详细对比!
结论:Linux 上 只要旧进程退出,PID 就可能被复用,但不会出现两个进程同时拥有相同 PID。
PID 范围Windows 用 对象句柄表 管理进程,每个进程有唯一的 ProcessId。理论上 32 位整数范围,但受资源限制。分配方式内核对象管理器分配 PID,通常也是递增的。一般从 500+ 开始,而不是像 Linux 从 1 开始。重复使用场景进程结束 → 内核对象销毁 → 句柄释放 → 这个 PID 可能被重用。Windows 通常会延迟复用,以避免调试和 API 错误。结论:Windows 也会复用 PID,但速度更慢。
$ echo $$ # 当前 shell 的 PID1234$ sleep 1000 & # 启动一个子进程[1] 1235$ kill 1235 # 杀掉它$ sleep 1000 & # 再启动一个[1] 1235 # PID 被复用Start-Process NotepadGet-Process -Name notepad | Select-Object IdStop-Process -Name notepadStart-Process notepadGet-Process -Name notepad | Select-Object Id第二次启动 Notepad,有时会获得相同的 PID。
来源:linux运维菜