Подтвердить что ты не робот

Как Linux/Unix Bash script знает свой собственный PID?

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

Любая идея, как это сделать?

4b9b3361

Ответ 1

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

Ответ 2

используйте $BASHPID или $$

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

Ответ 3

В дополнение к примеру, приведенному в Advanced Bash Scripting Guide, на который ссылается Jefromi, эти примеры показывают как трубы создают подоболочки:

$ 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

Ответ 4

ПИД-код хранится в $$.

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

Ответ 5

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

Ответ 6

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

sleep 1 &
mypid=$(ps -o ppid= -p "$!")