В чем разница между / proc / self и / proc / $$? - PullRequest
1 голос
/ 29 мая 2019

Раньше я думал, что /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
...

1 Ответ

3 голосов
/ 29 мая 2019

$$ - это специальная переменная bash, которая раскрывается в pid оболочки.

/proc/self - это символическая ссылка real на подкаталог /proc/ процесса.это делает вызов.

Когда вы делаете ls /proc/$$, оболочка расширяет его до ls /proc/pid-of-bash, и это то, что вы видите, содержимое процесса оболочки.

Но когда вы делаетеls /proc/self вы видите содержимое недолговечного ls процесса.

$$ не ограничивается этим использованием, вы можете написать echo $$, чтобы увидеть pid bash;Вы можете использовать его, чтобы убить себя и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...