-
while
não obtém seu próprio PID porque é uma palavra-chave do shell, não um comando externo. Você obterá o PID listado comobash
process. Para obter o PID, insiraecho $$
dentro dewhile
loop e useps aux | grep '[b]ash'
para corresponder ao PID. -
Se algum comando não for um shell embutido, você pode obter o PID usando a maneira usual. usando
ps
,pgrep
. No campo PPID (Parent Process ID), você normalmente veria o PID do shell no qual está sendo executado.Por exemplo. para obter detalhes sobre o comando
foobar
dentro de um loop de shell, você pode fazer:ps -ef | grep '[f]oobar'
ou
ps aux | grep '[f]oobar'
ou
pgrep
:pgrep 'foobar'
Conforme mais de um processo de shell for executado, você deve procurar verbosidade e verificar o campo PPID para corresponder ao PID do shell.
Observe que, como você está em loop, a disponibilidade de qualquer processo na tabela de processos dependerá da hora em que está sendo executada e da verificação da tabela de processos.