我在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是命令的PID ls
,而不是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,则需要确保/proc/self
在shell运行时使用,而不是其中一个子进程:
cd /proc/self ; pid=$(awk '{print $1}' stat) ; cd -
(这cd
是一个bash
内部命令,因此,在您访问的位置/proc/self
,您仍然在shell进程中运行).