「uptime」のソースコードはどこにありますか?


8

私はPythonを学んでいます。これまでは、基本的なPythonコーディングのみを行ってきました。1日前に、treeコマンドのPython実装をチェックしました。突然、のPythonクローンを作成しようと思いましたuptime。私はそれがどの言語で実装されているか、そしてそれを複製することに伴う複雑さは何であるかについての手がかりはありません。

しかし、そのソースコードは見つかりませんでした。Fedora 14を使用しています。kernel-develパッケージがインストールされています。実行しましたwhereis uptimeが、/usr/bin/uptimevimを使用して開くと、生成されたファイルに奇妙なシンボルが表示されます。ソースコードをグーグルで検索しても、望ましい結果は得られませんでした。ソースコードはどこにありますか?


1
vimでファイルを開いてファイルの構成を確認するのではなく、(またはそれに加えて)を試してくださいfile /usr/bin/uptime。fileコマンドは、一連の半魔法のヒューリスティックを使用して、ファイルの内容(この場合はELF形式のバイナリ実行可能ファイル)を推測します。
mattdm 2011年

私が好きなデバッグツールはstraceです。アプリケーションが行うすべてのシステムコールが表示されます。実行strace uptimeすると、(ロード後に)/ proc / uptimeと/ proc / loadavgのオープンコールが表示されます。それはすべてが、それは時々 、リバースエンジニアリングにまともなスタートだ表示されませんが
リッチHomolka

回答:


8

アップタイムは「procps」パッケージの一部であり、アップストリームソースはhttp://procps.sourceforge.net/にあります (fedora ユーザーではないため、.src.rpmの場所が不明です)。

しかし、あなたが尋ねなかった質問に答えるために; / proc / uptimeを見てください。最初の数字は、起動後の秒数です。あなたはそれをかなり簡単に使えるものに変えることができるはずです:)


ありがとう。コードを手に入れました。ここに投稿する前に/ proc / uptimeをチェックアウトしました。それが私が使用する最後のオプションでした。
ダルミット2011年

1
ソースを見ただけで、コードは/ proc / uptimeから稼働時間を読み取るだけです。procpsソースの... / proc / sysinfo.cでuptime()関数を確認します。gitorious.org/procps/procps/blobs/master/proc/sysinfo.c #line75
jsbillings

9

一般に、FedoraのようなRPMベースのディストリビューションでは、で特定のコマンドを提供するパッケージの名前を見つけることができますrpm -qf /path/to/command。このような:

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

その後、でソースRPMをダウンロードできますyumdownloader --source procps。(まだyum-utilsインストールしていない場合は、yumdownloaderはパッケージから取得されます。)src.rpmを取得したら、rpm -iまたはのいずれかでパッケージを解凍できますrpm2cpio

または、多くの場合、プロジェクトURLのRPMパッケージを照会できます。これにより、上流のソースを参照できるようになります。

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

そして、かっこいい、オンラインで簡単に閲覧できるコードがあります。あなたがそれをたどるなら、基本的にそれがするすべては/proc/uptime、きれいにそれを読んで印刷することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.