-
whilenão obtém seu próprio PID porque é uma palavra-chave do shell, não um comando externo. Você obterá o PID listado comobashprocess. Para obter o PID, insiraecho $$dentro dewhileloop 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
foobardentro 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.