Ich lerne Python. Bis jetzt habe ich nur grundlegende Python-Codierung durchgeführt. Vor einem Tag habe ich die Python-Implementierung des tree
Befehls überprüft . Plötzlich dachte ich daran, einen Python-Klon für zu erstellen uptime
. Ich habe keine Ahnung, in welcher Sprache es implementiert ist und wie komplex das Klonen sein würde.
Aber ich konnte den Quellcode nicht finden. Ich verwende Fedora 14. Das Kernel-Entwicklungspaket ist installiert. Ich habe es getan, whereis uptime
aber die resultierende /usr/bin/uptime
Datei zeigt seltsame Symbole, wenn sie mit vim geöffnet wird. Das Googeln nach dem Quellcode konnte ebenfalls nicht zu den gewünschten Ergebnissen führen. Wo finde ich den Quellcode?
file /usr/bin/uptime
. Der Befehl file verwendet eine Reihe von halbmagischen Heuristiken, um den Inhalt der Datei zu erraten - in diesem Fall eine binäre ausführbare Datei im ELF-Format.strace
. Es werden alle Systemaufrufe angezeigt, die Ihre Anwendung ausführt. Wenn Sie ausführenstrace uptime
, werden (nach dem Laden) offene Aufrufe von / proc / uptime und / proc / loadavg angezeigt. Obwohl es nicht alles zeigt, ist es manchmal ein anständiger Start in das Reverse EngineeringAntworten:
Die Verfügbarkeit ist Teil des 'procps'-Pakets. Die Upstream-Quelle befindet sich unter http://procps.sourceforge.net/ (Kein Fedora-Benutzer, daher nicht sicher, wo sich die .src.rpm befindet).
Um die Frage zu beantworten, die Sie jedoch nicht gestellt haben; Werfen Sie einen Blick in / proc / uptime. Die erste Zahl ist Sekunden seit dem Start. Du solltest in der Lage sein, das ziemlich einfach in etwas brauchbares zu verwandeln :)
quelle
Im Allgemeinen finden Sie in einer RPM-basierten Distribution wie Fedora den Namen des Pakets, das einen bestimmten Befehl enthält
rpm -qf /path/to/command
. So was:Sie können dann das Quell-RPM mit herunterladen
yumdownloader --source procps
. (yumdownloader stammt aus demyum-utils
Paket, wenn Sie das noch nicht installiert haben.) Sobald Sie die src.rpm haben, können Sie sie entweder mitrpm -i
oder mit entpackenrpm2cpio
.Alternativ können Sie in vielen Fällen das RPM-Paket nach der Projekt-URL abfragen, wodurch Sie möglicherweise hilfreich auf die vorgelagerte Quelle verweisen:
Und cool, es gibt den Code, der bequem online durchsucht werden kann. Wenn Sie es durchgehen, ist es im Grunde alles, was es tut,
/proc/uptime
es hübsch zu lesen und auszudrucken.quelle