Como contar o número aproximado de binários / programas compatíveis com Intel em um computador executando o OS X Lion e o tempo que isso leva?

3

Para uma contagem aproximada - e para ter uma ideia do tempo necessário para contar - comecei com um comando de várias linhas que poderia ser executado no tcsh.

Eu não sou especialista em encanamento, então eu convido respostas melhores do que as primeiras dadas por mim abaixo.

Notas

Para manter a caminhada não excessivamente demorada, gostaria de:

  • ande apenas algumas hierarquias com maior probabilidade de conter binários
  • não começa a caminhada em / root.

Estou tão interessado no tempo gasto para contar quanto na contagem aproximada.

Referências

arch (3) Manual de ferramentas do desenvolvedor do Mac OS X Página

lipo (1) Página do manual do Mac OS X

    
por Graham Perrin 31.01.2012 / 10:43

3 respostas

3

Eu uso o seguinte em bash , mantendo a mesma abordagem (usando lipo ):

time find ${PATH//:/ } /Applications /Developer /Library /System ~/Applications -type f -exec lipo -info '{}' ';' 2>/dev/null | grep -E "(x86_64|i.86|pent)" | tee binaries.txt | wc -l

Ele criará um arquivo, binaries.txt com a lista de resultados, e imprimirá o número de resultados, assim como os resultados time , na saída padrão.

Reduzi a expressão man 3 arch based grep , removi a entrada i860 e usei $PATH em vez de uma lista codificada de locais binários Unix. Também removi o -perm primary de find , pois é uma heurística que pode perder os binários apenas executáveis para usuários específicos.

    
por 31.01.2012 / 11:01
2

Em tcsh :

sh
uname -v && date &&\
2>/dev/null find /opt/X11/bin /opt/local/bin /opt/local/sbin \
/bin /sbin /usr/X11/bin /usr/bin /usr/local/bin /usr/sbin \
/Applications /Developer /Library /System ~/Applications \
-type f -perm +111 -exec lipo -info '{}' ';' | grep -E \
"(i386|x86_64|i860|i486|i486SX|pentium|i586|pentpro|i686|pentIIm3|pentIIm5|pentium4)" &&\
date && exit

O número de linhas de saída pode ser contado em um editor de texto, como o TextWrangler. Subtraia do começo as poucas linhas até e incluindo a data e a hora, subtraia do final as duas linhas que incluem a data e a hora, que deixa um valor aproximado.

Se você quer saber porque o grep é para qualquer uma das doze arquiteturas (não duas): é necessário considerar todas as arquiteturas atualmente conhecidas onde a descrição, na página man do arch, inclui Intel . Encontrar algo diferente de i386 ou x86_64 pode ser raro ou desconhecido no momento, mas eu gostaria que as respostas a essa pergunta resistissem ao teste do tempo, para não se limitar a essas duas.

Como resposta, isso está longe de ser ideal ...

    
por 31.01.2012 / 11:19
2

Um pouco além da pergunta inicial

Ainda experimentando, aqui está uma variação da resposta aceita por Daniel:

date && sw_vers && uname -a && touch /Users/Shared/binaries.log && bash 
open /Users/Shared/binaries.log && time find ${PATH//:/ } \
/Applications /Developer /Library /System ~/Applications \
-type f -exec lipo -info '{}' ';' 2>/dev/null \
| grep -E "(x86_64|i.86|pent)" | tee /Users/Shared/binaries.log \
| wc -l && exit

Ele usa uma área compartilhada para gravar o arquivo, com um nome que termina em .log e deve abrir o .log no Console. Além disso, a janela do Terminal mostrará a data e a hora, a versão do sistema e as construções que eu gostaria de manter uma nota.

Ele não traz a janela de log para o primeiro plano se outras janelas do Console estiverem abertas e não levar o Terminal ao primeiro plano na conclusão.

Em alguns sistemas, a caminhada pode ser muito demorada.

Para uma corrida mais rápida

Podemos usar o -perm primário de find -

date && sw_vers && uname -a && touch /Users/Shared/binaries.log && bash 
open /Users/Shared/binaries.log && time find ${PATH//:/ } \
/Applications /Developer /Library /System ~/Applications \
-perm +111 -type f -exec lipo -info '{}' ';' 2>/dev/null \
| grep -E "(x86_64|i.86|pent)" | tee /Users/Shared/binaries.log \
| wc -l && exit

- mas como Daniel comentou , isso pode perder binários que são executáveis apenas para usuários específicos.

    
por 31.01.2012 / 12:33