Durante a depuração de um problema relacionado, notei que o pgrep estava retornando um PID para padrões de linha de comando aparentemente arbitrários, por exemplo:
$ sudo pgrep -f "asdf"
13017
$ sudo pgrep -f ";lkj"
13023
$ sudo pgrep -f "qwer"
13035
$ sudo pgrep -f "poiu"
13046
$ sudo pgrep -f "blahblahblah"
14038
$ sudo pgrep -f "$(pwgen 16 1)"
14219
O mesmo comando sem sudo não retornou nada (como esperado):
$ pgrep -f blahblahblah
Eu tentei enviar o PID para o ps para ver qual era o comando, mas isso não funcionou:
$ sudo pgrep -f blahblahblah | xargs ps -f -p
UID PID PPID C STIME TTY TIME CMD
Parece que o processo termina muito rapidamente. Então eu tentei usar ps e grep, mas isso não funcionou (ou seja, não houve resultados):
$ sudo ps -e -f | grep [a]sdf
$ sudo ps -e -o command | grep asdf
grep asdf
Eu também notei que, se eu rerançasse o comando com rapidez suficiente, parecia que o PID estava subindo constantemente:
$ for i in $(seq 1 10); do sudo pgrep -f $(pwgen 4 1); done
14072
14075
14078
14081
14084
14087
14090
14093
14096
14099
$ for i in $(seq 1 10); do sudo pgrep -f blahblahblah; done
13071
13073
13075
13077
13079
13081
13083
13085
13087
13089
Como verificação de integridade, tentei usar o find e o grep para pesquisar o diretório proc:
$ sudo find /proc/ -regex '/proc/[0-9]+/cmdline' -exec grep adsfasdf {} \;
Binary file /proc/14113/cmdline matches
Binary file /proc/14114/cmdline matches
$ sudo find /proc/ -regex '/proc/[0-9]+/cmdline' -exec grep adsfasdf {} \;
Binary file /proc/14735/cmdline matches
Binary file /proc/14736/cmdline matches
Mais uma vez, parece que o PID está subindo e que o cmdline corresponde a cadeias arbitrárias.
Eu tentei isso no CentOS 6.7 e no Ubuntu 12.04 com os mesmos resultados. Quando experimentei experiências semelhantes no meu Mac, os testes voltaram negativos - sem processos misteriosos.
O que está acontecendo aqui?