Saya sedang belajar Python. Sampai sekarang saya hanya melakukan coding Python dasar. Sehari yang lalu, saya memeriksa implementasi tree
perintah python . Tiba-tiba saya berpikir untuk membuat klon Python uptime
. Saya tidak memiliki petunjuk tentang bahasa apa itu diimplementasikan dan apa kompleksitas yang terlibat dalam kloning itu.
Tetapi saya tidak dapat menemukan kode sumbernya. Saya menggunakan Fedora 14. paket kernel-devel diinstal. Saya lakukan whereis uptime
tetapi /usr/bin/uptime
file yang dihasilkan menunjukkan simbol aneh ketika dibuka menggunakan vim. Googling untuk kode sumbernya tidak dapat menghasilkan hasil yang diinginkan juga. Di mana saya dapat menemukan kode sumbernya?
file /usr/bin/uptime
. Perintah file menggunakan serangkaian heuristik semi-magis untuk menebak isi file - dalam hal ini, biner format ELF yang dapat dieksekusi.strace
. Ini akan menampilkan semua syscalls yang dibuat oleh aplikasi Anda. Jika Anda menjalankannyastrace uptime
akan menampilkan (setelah memuat) panggilan terbuka di / proc / uptime dan / proc / loadavg. Meskipun tidak menunjukkan segalanya, kadang-kadang ini merupakan awal yang baik untuk rekayasa balikJawaban:
Uptime adalah bagian dari paket 'procps', sumber upstream ada di http://procps.sourceforge.net/ (Bukan pengguna fedora, jadi tidak yakin di mana menemukan .src.rpm mereka).
Namun, untuk menjawab pertanyaan yang tidak Anda tanyakan; lihat di / proc / uptime Angka pertama adalah detik sejak boot. Anda harus dapat mengubahnya menjadi sesuatu yang dapat digunakan dengan cukup mudah :)
sumber
Secara umum, pada distribusi berbasis RPM seperti Fedora, Anda dapat menemukan nama paket yang memberikan perintah
rpm -qf /path/to/command
. Seperti ini:Anda kemudian dapat mengunduh RPM sumber dengan
yumdownloader --source procps
. (yumdownloader berasal dariyum-utils
paket, jika Anda belum menginstalnya.) Setelah Anda memiliki src.rpm, Anda dapat membukanya dengan salah saturpm -i
atau denganrpm2cpio
.Sebagai alternatif, dalam banyak kasus Anda dapat meminta paket RPM untuk URL proyek, yang mungkin membantu mengarahkan Anda ke sumber upstream:
Dan, keren, ada kode yang mudah dijelajahi secara online. Jika Anda mengikutinya, pada dasarnya semua yang dilakukan adalah membaca
/proc/uptime
dan mencetaknya dengan cantik.sumber