У меня есть скрипт на Bash с именем Script.sh, и он должен знать свой собственный PID (т.е. мне нужно получить PID внутри Script.sh)
Script.sh
Есть идеи, как это сделать?
Переменная $$ содержит PID.
использовать $BASHPID или $$
$BASHPID
$$
См. Руководство для получения дополнительной информации, включая различия между ними.
TL; DRTFM
()
В дополнение к примеру, приведенному в 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
PID хранится в $$.
Пример: kill -9 $$ уничтожит экземпляр оболочки, из которого вызывается.
kill -9 $$
Вы можете использовать переменную $$.
Если процесс является дочерним процессом, а $ BASHPID не задан, можно запросить ppid созданного дочернего процесса запущенного процесса. Это может быть немного некрасиво, но это работает. Пример:
sleep 1 & mypid=$(ps -o ppid= -p "$!")