gpt4 book ai didi

linux - 我的 linux bash $$ 不匹配/proc/self 链接?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:23 24 4
gpt4 key购买 nike

我在 RHEL 5 上尝试/proc 是这样的:

$echo $$
50040

$ls -ld /proc/self
lrwxrwxrwx 1 root root 64 Jan 22 15:25 /proc/self -> 22485

我希望/proc/self 链接到/proc 的子目录,这是我当前的进程 ID。但是 $$ 显示进程 ID 是 50040,而不是 22485。这是为什么?

最佳答案

您在发出 ls 命令时看到的 PID 是 ls 命令的 PID,而不是您的 shell 的 PID。如果你连续多次这样做,你会发现每次都不一样:

fred> ls -ld /proc/self
lrwxrwxrwx 1 root root 0 Jan 12 13:13 /proc/self -> 5075

fred> ls -ld /proc/self
lrwxrwxrwx 1 root root 0 Jan 12 13:13 /proc/self -> 5076

fred> ls -ld /proc/self
lrwxrwxrwx 1 root root 0 Jan 12 13:13 /proc/self -> 5077

如果你想获得shell的PID,你需要确保在shell运行时使用/proc/self,而不是它的子进程之一:

cd /proc/self ; pid=$(awk '{print $1}' stat) ; cd -

(cd 是一个 bash 内部命令,因此,在您访问 /proc/self 的位置,您仍在运行在 shell 进程本身中)。

关于linux - 我的 linux bash $$ 不匹配/proc/self 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41798205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com