У меня есть скрипт на Bash Script.sh
, и он должен знать свой собственный PID (т.е. мне нужно получить PID внутри Script.sh)
Есть идеи как это сделать ?
Переменная $$ содержит PID.
использовать $BASHPID
или$$
См. Руководство для получения дополнительной информации, включая различия между ними.
TL; DRTFM
$$
Расширяется до идентификатора процесса оболочки.
()
подоболочке он расширяется до идентификатора процесса вызывающей оболочки, а не подоболочки.$BASHPID
Расширяется до идентификатора текущего процесса Bash.
()
подоболочке он расширяется до идентификатора процесса подоболочки
$BASHPID
это новинка для BASH 4. Если вы используете BASH 3.x, вы должны использовать$$
В дополнение к примеру, приведенному в Advanced Bash Scripting Guide, на который ссылается Jefromi , эти примеры показывают, как каналы создают подоболочки:
источник
stdin
). Строка называется «здесь строка».PID хранится в
$$
.Пример:
kill -9 $$
уничтожит экземпляр оболочки, из которой он вызван.источник
kill -9
(с-9
флагом) считается вредным и используется только в случае крайней необходимости).kill -9 $$
делает ровно 1 вещь. Это убивает текущий процесс оболочки . Это полезно, если вы сделали что-то в сеансе оболочки, которое вы не хотите записывать в.bash_history
Like:docker run -e PASSWORD=hunter2 ircbot
Вы можете использовать
$$
переменную.источник
Если процесс является дочерним процессом, а $ BASHPID не задан, можно запросить ppid созданного дочернего процесса запущенного процесса. Это может быть немного некрасиво, но это работает. Пример:
источник