Eu estou aprendendo Python. Até agora, eu tenho feito apenas a codificação básica do Python. Um dia atrás, verifiquei a implementação do tree
comando python . De repente, pensei em criar um clone para o Python uptime
. Não tenho idéia de qual idioma é implementado e qual seria a complexidade envolvida na clonagem.
Mas não consegui encontrar o código fonte. Estou usando o Fedora 14. O pacote kernel-devel está instalado. Eu fiz, whereis uptime
mas o /usr/bin/uptime
arquivo resultante mostra símbolos estranhos quando aberto usando o vim. Pesquisando por seu código-fonte também não conseguiu os resultados desejados. Onde posso encontrar o código fonte?
file /usr/bin/uptime
. O comando file usa uma série de heurísticas semi-mágicas para adivinhar o conteúdo do arquivo - nesse caso, um executável binário no formato ELF.strace
. Ele mostrará todos os syscalls que seu aplicativo faz. Se você executar,strace uptime
ele mostrará (após o carregamento) as chamadas abertas em / proc / uptime e / proc / loadavg. Embora ele não mostra tudo, às vezes é um começo decente em engenharia reversaRespostas:
O Uptime faz parte do pacote 'procps', a fonte upstream está em http://procps.sourceforge.net/ (Não é um usuário do fedora, portanto, não sabe onde encontrar o .src.rpm).
Para responder à pergunta que você não fez, no entanto; dê uma olhada em / proc / uptime O primeiro número é segundos após a inicialização. Você deve conseguir transformá-lo em algo utilizável com bastante facilidade :)
fonte
Em geral, em uma distribuição baseada em RPM como o Fedora, você pode encontrar o nome do pacote que fornece um determinado comando
rpm -qf /path/to/command
. Como isso:Você pode fazer o download do RPM de origem com
yumdownloader --source procps
. (o yumdownloader vem doyum-utils
pacote, se você ainda não o tiver instalado.) Depois de instalar o src.rpm, você pode descompactá-lo com umrpm -i
ou com orpm2cpio
.Como alternativa, em muitos casos, você pode consultar o pacote RPM para o URL do projeto, o que pode ser útil para apontar para a fonte upstream:
E, legal, existe o código que pode ser navegado on-line convenientemente. Se você segui-lo, basicamente tudo o que faz é ler
/proc/uptime
e imprimi-lo lindamente.fonte