Hin*_*sum 1 linux bash pid process proc
我在RHEL 5上尝试/ proc这样:
$echo $$
50040
$ls -ld /proc/self
lrwxrwxrwx 1 root root 64 Jan 22 15:25 /proc/self -> 22485
Run Code Online (Sandbox Code Playgroud)
我期望/ 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
Run Code Online (Sandbox Code Playgroud)
如果要获取shell的PID,则需要确保/proc/self在shell运行时使用,而不是其中一个子进程:
cd /proc/self ; pid=$(awk '{print $1}' stat) ; cd -
Run Code Online (Sandbox Code Playgroud)
(这cd是一个bash内部命令,因此,在您访问的位置/proc/self,您仍然在shell进程中运行).
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |