मेरे सिस्टम पर इससे अपटाइम मिलता है /proc/uptime
:
$ strace -eopen uptime
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/libproc-3.2.8.so", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/proc/version", O_RDONLY) = 3
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
open("/proc/uptime", O_RDONLY) = 3
open("/var/run/utmp", O_RDONLY|O_CLOEXEC) = 4
open("/proc/loadavg", O_RDONLY) = 4
10:52:38 up 3 days, 23:38, 4 users, load average: 0.00, 0.02, 0.05
से proc मैनपेज :
/proc/uptime
This file contains two numbers: the uptime of the system
(seconds), and the amount of time spent in idle process
(seconds).
खरीद फाइल सिस्टम में छद्म फाइलों का एक सेट होता है। वे वास्तविक फाइलें नहीं हैं, वे सिर्फ फाइलों की तरह दिखते हैं, लेकिन उनमें ऐसे मान होते हैं जो सीधे कर्नेल द्वारा प्रदान किए जाते हैं। हर बार जब आप किसी फ़ाइल को पढ़ते हैं, जैसे कि /proc/uptime
, इसकी सामग्री मक्खी पर पुनर्जीवित हो जाती है। Proc फाइलसिस्टम कर्नेल का एक इंटरफ़ेस है।
फ़ाइल का लिनक्स कर्नेल स्रोत कोड में fs/proc/uptime.c
पर लाइन 49 , आप एक समारोह कॉल देखें:
proc_create("uptime", 0, NULL, &uptime_proc_fops);
यह एक खरीद फाइलसिस्टम प्रविष्टि कहलाता है uptime
( जिसे आमतौर पर रिसोर्ट्स के तहत माउंट किया जाता है /proc
) कहा जाता है , और इसके लिए एक फंक्शन को जोड़ा जाता है, जो उस छद्म फाइल पर मान्य फ़ाइल संचालन और उनसे जुड़े कार्यों को परिभाषित करता है। अपटाइम के मामले में यह सिर्फ read()
और open()
संचालन है। हालाँकि, यदि आप फ़ंक्शन का पता लगाते हैं, तो आप यहाँ समाप्त हो जाएंगे , जहाँ अपटाइम की गणना की जाती है।
आंतरिक रूप से, एक टाइमर-इंटरप्ट है जो समय-समय पर सिस्टम अपटाइम (अन्य मूल्यों के अलावा) को अपडेट करता है। अंतराल, जिसमें टाइमर-इंटरप्ट टिक, प्रीप्रोसेसर-मैक्रो द्वारा परिभाषित किया गया है HZ
, जिसका सटीक मान कर्नेल कॉन्फ़िगरेशन फ़ाइल में परिभाषित किया गया है और संकलन समय पर लागू किया गया है।
HZ
अंतिम बूट के बाद से आवृत्ति (चक्र प्रति सेकंड) के साथ संयुक्त निष्क्रिय समय और सीपीयू चक्र की संख्या की गणना की जा सकती है।
अपने प्रश्न को संबोधित करने के लिए: "अपटाइम" की गिनती कब से शुरू होती है?
चूँकि अपटाइम एक कर्नेल आंतरिक मूल्य है, जो हर चक्र पर टिक करता है, यह तब गिना जाने लगता है जब कर्नेल ने इनिशियलाइज़ किया होता है। अर्थात्, जब पहला चक्र समाप्त हो गया है। कुछ भी माउंट होने से पहले, सीधे बूटलोडर कर्नेल छवि को नियंत्रण देता है।