Isso não é um erro. O Grep acabou de relatar sua falha em pesquisar por um arquivo especial (provavelmente um soquete) e já estava trabalhando no próximo. Se você não quer ver as mensagens de erro do grep, você pode enviá-las para o bitbucket:
fgrep -r autostart * 2> /dev/null
Note que o fgrep provavelmente será muito mais rápido no seu caso, porque você está procurando por uma string, não por uma expressão regular.
Ao contrário do que você parecia, o grep não caiu. Tecnicamente, não foi pendurado também. Talvez estivesse pesquisando /dev/random
para a string. Eventualmente, ele iria encontrá-lo lá, embora isso possa levar uma quantidade astronômica de tempo. Infelizmente, logo após o grep ter encontrado a string em /dev/random
, ele encontraria /dev/zero
onde certamente gastaria uma infinidade de tempo procurando pela string. Logicamente, portanto, seu comando estava garantido para não terminar.
Se você deseja impedir que fgrep
pesquise arquivos especiais, combine-o com find
:
find / -type f -exec fgrep -l autostart {} \;
E como você está procurando um script, ignorar todos os não executáveis no sistema de arquivos economizará muito tempo:
find / -type f -executable -exec fgrep -l autostart {} \;
Na verdade, eu focaria minha busca primeiro nos suspeitos usuais:
find {,/usr}/{,s}bin /etc -type f -executable -exec fgrep -l autostart {} \;
Particularmente, se você tiver alguns sistemas de arquivos remotos montados, que o grep também deveria procurar.