Estoy aprendiendo Python. Hasta ahora solo he estado haciendo codificación básica de Python. Hace un día, verifiqué la implementación del tree
comando en Python . De repente pensé en crear un clon de Python uptime
. No tengo ni idea de en qué idioma se implementa y cuál sería la complejidad que implica clonarlo.
Pero no pude encontrar su código fuente. Estoy usando Fedora 14. El paquete kernel-devel está instalado. Lo hice whereis uptime
pero el /usr/bin/uptime
archivo resultante muestra símbolos extraños cuando se abre con vim. Buscar en Google su código fuente tampoco podría producir los resultados deseados. ¿Dónde puedo encontrar su código fuente?
file /usr/bin/uptime
. El comando de archivo utiliza una serie de heurísticas semimágicas para adivinar el contenido del archivo, en este caso, un ejecutable binario en formato ELF.strace
. Mostrará todas las llamadas al sistema que realiza su aplicación. Si lo ejecutastrace uptime
, mostraría (después de cargar) las llamadas abiertas en / proc / uptime y / proc / loadavg. Aunque no muestra todo, a veces es un comienzo decente en ingeniería inversaRespuestas:
El tiempo de actividad es parte del paquete 'procps', la fuente ascendente está en http://procps.sourceforge.net/ (No es un usuario de fedora, así que no estoy seguro de dónde encontrar su .src.rpm).
Sin embargo, para responder la pregunta que no hizo; eche un vistazo en / proc / uptime El primer número son segundos desde el arranque. Deberías poder convertir eso en algo utilizable con bastante facilidad :)
fuente
En general, en una distribución basada en RPM como Fedora, puede encontrar el nombre del paquete que proporciona un comando determinado
rpm -qf /path/to/command
. Me gusta esto:Luego puede descargar el RPM de origen con
yumdownloader --source procps
. (yumdownloader viene delyum-utils
paquete, si aún no lo tiene instalado). Una vez que tenga el src.rpm, puede descomprimirlo conrpm -i
o conrpm2cpio
.Alternativamente, en muchos casos puede consultar el paquete RPM para la URL del proyecto, lo que puede ayudarlo a encontrar la fuente principal:
Y, genial, está el código convenientemente navegable en línea. Si lo sigue, básicamente todo lo que hace es leerlo
/proc/uptime
e imprimirlo con precisión.fuente