Как скрипт Linux / Unix Bash узнает свой собственный PID?

StackOverflow https://stackoverflow.com/questions/2493642

  •  21-09-2019
  •  | 
  •  

Вопрос

У меня есть скрипт в Bash под названием Script.sh, и ему нужно знать свой собственный PID (т.е.Мне нужно получить PID внутри Script.sh )

Есть какие - нибудь идеи , как это сделать ?

Это было полезно?

Решение

Переменная '$$' содержит PID.

Другие советы

использование $BASHPID или $$

Смотрите на руководство пользователя для получения дополнительной информации, включая различия между ними.

TL;DRTFM

  • $$ Расширяется до идентификатора процесса командной строки.
    • В () подоболочка, она расширяется до идентификатора процесса вызывающей оболочки, а не подоболочки.
  • $BASHPID Расширяется до идентификатора процесса текущего процесса Bash.
    • В () подоболочка, она расширяется до идентификатора процесса подоболочки

В дополнение к примеру, приведенному в Расширенное Руководство по написанию сценариев Bash на который ссылается Джефроми, эти примеры показывают , как каналы создают подоболочки:

$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656

PID хранится в $$.

Пример: kill -9 $$ уничтожит экземпляр оболочки, из которого он вызывается.

Вы можете использовать $$ переменная.

Если процесс является дочерним процессом и $BASHPID не задан, можно запросить ppid созданного дочернего процесса запущенного процесса.Это может быть немного некрасиво, но это работает.Пример:

sleep 1 &
mypid=$(ps -o ppid= -p "$!")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top