Eu tenho um script no Bash chamado Script.sh
e ele precisa conhecer seu próprio PID (ou seja, eu preciso obter o PID dentro do Script.sh)
Alguma idéia de como fazer isso ?
A variável '$$' contém o PID.
use $BASHPID
ou$$
Consulte o manual para obter mais informações, incluindo diferenças entre os dois.
TL; DRTFM
$$
Expande para o ID do processo do shell.
()
subshell, ele se expande para o ID do processo do shell de chamada, não para o subshell.$BASHPID
Expande para o ID do processo Bash atual.
()
subshell, ele se expande para o ID do processo do subshell
$BASHPID
é novo para bater 4. Se você estiver usando BASH 3.x, você tem que usar$$
Além do exemplo dado no Advanced Bash Scripting Guide referido pelo Jefromi , estes exemplos mostram como os pipes criam subshells:
fonte
stdin
). A cadeia é referida como uma "cadeia aqui".O PID é armazenado em
$$
.Exemplo:
kill -9 $$
matará a instância do shell da qual é chamada.fonte
kill -9
(com-9
bandeira) é considerado nocivo e só deve ser usado se for absolutamente necessário).kill -9 $$
faz exatamente 1 coisa. Isso mata o processo atual do shell . Isso é útil se você tiver feito algo na sessão shell que não deseja que seja escrito.bash_history
como:docker run -e PASSWORD=hunter2 ircbot
Você pode usar a
$$
variávelfonte
Se o processo for um processo filho e $ BASHPID não estiver definido, é possível consultar o ppid de um processo filho criado do processo em execução. Pode ser um pouco feio, mas funciona. Exemplo:
fonte