/proc/update

uptimeコマンドは、「//proc/uptime」を読み込んでいる。

ソースで確認。

 

ソースコード:whattime.c
       sysinfo.c
uptime(&uptime_secs, &idle_secs);
で/proc/updateの内容を取得している。

 

procps-3.2.8\proc\sysinfo.c(37,9) [SJIS]: #define UPTIME_FILE "/proc/uptime"と定義

double up_1, up_2, seconds;

do{
FILE_TO_BUF(UPTIME_FILE,uptime_fd); sscanf(buf, "%lf", &up_1);
/* uptime(&up_1, NULL); */
FILE_TO_BUF(STAT_FILE,stat_fd);
sscanf(buf, "cpu %Lu %Lu %Lu %Lu", &user_j, &nice_j, &sys_j, &other_j);
FILE_TO_BUF(UPTIME_FILE,uptime_fd); sscanf(buf, "%lf", &up_2);
/* uptime(&up_2, NULL); */
} while*1; /* want under 0.1% error */

updays = (int) uptime_secs / (60*60*24);
strcat (buf, "up ");

if (updays)
pos += sprintf(buf + pos, "%d day%s, ", updays, (updays != 1) ? "s" : "");

upminutes = (int) uptime_secs / 60;
uphours = upminutes / 60;
uphours = uphours % 24;

upminutes = upminutes % 60;

if(uphours)

pos += sprintf(buf + pos, "%2d:%02d, ", uphours, upminutes);

else
pos += sprintf(buf + pos, "%d min, ", upminutes);

 

 

 

E.2.28. /proc/uptime

このファイルには、前回の再起動から経過した時間に関する詳細情報が記載されています。/proc/uptime の出力は極めて少なくなります:
350735.47 234388.90
第 1 の値は、システムが起動してから経過した合計時間を示しています。 第 2 の値は、各コアがアイドル状態で経過した合計時間の秒数です。このため、マルチコア搭載のシステムでは、第 2 の値がシステムアップタイムの合計よりも大きくなる場合があります。
 
参考URL
 

*1:long long)( (up_2-up_1)*1000.0/up_1