我曾经认为这 /proc/self和/proc/$$bash 终端是一样的,但现在我发现它们是不同的。
我知道$$意味着当前进程的 pid,并且/proc/self是当前正在运行的进程,它应该是 bash 终端。为什么它们不同?
root@VM-73-203-debian:~# echo $$
24415
root@VM-73-203-debian:~# ls -l /proc/self
lrwxrwxrwx 1 root root 0 Nov 22 2018 /proc/self -> 24465
root@VM-73-203-debian:~# ls -l /proc/$$
total 0
dr-xr-xr-x 2 root root 0 May 29 16:23 attr
...
Run Code Online (Sandbox Code Playgroud)
$$ 是一个特殊的 bash 变量,它被扩展为 shell 的 pid。
/proc/self是到进行调用的进程的子目录的真正符号链接/proc/。
当你执行ls /proc/$$shell 时,它会扩展它ls /proc/pid-of-bash,这就是你看到的 shell 进程的内容。
但是当你这样做时,你会ls /proc/self看到这个短暂ls过程的内容。
该$$不限于这种用法,你可以写echo $$,看bash的PID; 你可以用它来自杀等等。
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |