Onde posso encontrar o código-fonte para 'uptime'?

8

Estou aprendendo Python. Até agora eu tenho feito apenas codificação Python básica. Um dia atrás, verifiquei a implementação em Python do comando tree . De repente pensei em criar um clone em Python para uptime . Eu não tenho nenhuma pista sobre qual linguagem é implementada e qual seria a complexidade envolvida na clonagem.

Mas não consegui encontrar o código-fonte. Eu estou usando o pacote kernel-devel do Fedora 14. Eu fiz whereis uptime , mas o arquivo /usr/bin/uptime resultante mostra símbolos estranhos quando aberto usando o vim. Pesquisando por seu código-fonte não poderia produzir os resultados desejados também. Onde posso encontrar seu código-fonte?

    
por Dharmit 15.03.2011 / 18:04

2 respostas

8

O tempo de atividade faz parte do pacote 'procps', a origem do upstream está no link (não é um usuário fedora, então não tenho certeza onde para encontrar o seu .src.rpm).

Para responder a pergunta que você não fez, no entanto; dê uma olhada em / proc / uptime O primeiro número é segundos desde a inicialização. Você deve ser capaz de transformar isso em algo facilmente utilizável:)

    
por 15.03.2011 / 18:11
9

Em geral, em uma distribuição baseada em RPM como o Fedora, você pode encontrar o nome do pacote que fornece um comando com rpm -qf /path/to/command . Assim:

$ rpm -qf $( which uptime )
procps-3.2.8-18.20110302git.fc16.x86_64

Você pode baixar o RPM de origem com yumdownloader --source procps . (O yumdownloader vem do pacote yum-utils , se você ainda não tiver instalado). Depois de ter o src.rpm, você pode descompactá-lo com rpm -i ou com rpm2cpio .

Como alternativa, em muitos casos, você pode consultar o pacote RPM para a URL do projeto, que pode ser útil para apontar para a fonte de envio de dados:

$ rpm -qi procps|grep ^URL
URL         : http://gitorious.org/procps

E, legal, há o código convenientemente navegável on-line. Se você seguir, basicamente tudo o que ele faz é ler /proc/uptime e imprimi-lo lindamente.

    
por 15.03.2011 / 18:29