uptime in unix
Heiko Wundram
heikowu at ceosg.de
Mon Sep 20 04:18:18 EDT 2004
Am Sonntag, 19. September 2004 23:21 schrieb Oli Schwarz:
> Are these things handled like in Java? Doesn't Python know anything
> about such platform specific things?
Python knows a lot about platform specific things (look at five different
implementations of os.path), or different implementations of mmap, which
works completely different on Unix than on Windows.
But, Python abstracts those differences away, and presents a coherent
interface to all this functionality. There are only very few function which
are actually platform specific.
Uptime and the like (for example, list of loaded kernel modules is another
candidate) is something that's not only platform specific, but also very
operating-system specific. Take Linux: it "invented" the /proc filesystem
(well, actually not the filesystem, but the hierarchy as it is know) to
present this kind of system info from the kernel, so open file, read, close
file. Take *BSD: they have /proc, but it's only present when running in Linux
compatability mode. Standard BSD has a SYSCALL to retrieve uptime using some
form of kernel config management with read only keys. Take Solaris: uptime is
retrieved using a SYSCALL, but this is a specific SYSCALL rather than some
config subsystem syscall as with BSD.
And Windows? "What's Uptime?" :-)
So, I guess uptime is just a concept that's so wildly different among
different operating systems (although the platform may be the same, for *nix
it's Posix, pretty much) that it's simply better not to add something like
this to the std-lib (I guess Pythonistas once reasoned like this, and I can
agree fully), but rather let the programmer do the job.
And, oh, if you thought that parsing the output of /usr/bin/uptime would solve
your problems: no, it only creates more, because the output of this command
isn't standardized either. With Linux you get the GNU version (well most of
the time, but not necessarily either), whose output is slightly different
than what the Posix standard specifies, whose output is slightly different
than the *BSD versions (who have a longer history and remain backwards
compatible), whose output is slightly different to the SysV version of uptime
(which needed to be different to *BSD in the 80s to bind users, so it was
made different), whose output... You name it... :-)
Heiko.
More information about the Python-list
mailing list