Uptime eines SuSE Servers in PHP anzeigen

KingChimera

Mitglied
Hallo, kleine aber feine Frage.
Habe meinen SuSE endlich stabil zum laufen gebracht, auch Apache etc. laufen einwandfrei. Und nachdem eine leere index.php e ist hab ich da nur mein Logo und die Uptime draufgeklatscht, ABER:

das Problem ist das die Uptime über /proc/uptime geholt wird, und SuSE wg. Desktopoptimierungsgründen die Uptime alle 50 Tage zurücksetzt. Blöd, weil der halt nach 50 Tagen immer neu anfängt.
Der TeamSpeak-Server zeigt im Interface allerdings die korrekte Uptime an, also ohne Reset.

Jetzt ist die Frage: wie kriege ich die Uptime korrekt angezeigt? Habe schon öfters bei Google gesucht, jedoch nie was passendes gefunden.
Ich brauche auch nur die Uptime, alles andere interessiert mich nicht.

Hier mal der Code wie er zur Zeit verwendet wird:
Code:
<?php
$uptime = exec("cat /proc/uptime");
$uptime = split(" ",$uptime);
$uptime = $uptime[0];
?>
<html>
<head>
<script language="javascript">
var upSeconds=<?php echo $uptime; ?>;
function doUptime() {
  var uptimeString = "Server Uptime: ";
  var secs = parseInt(upSeconds % 60);
  var mins = parseInt(upSeconds / 60 % 60);
  var hours = parseInt(upSeconds / 3600 % 24);
  var days = parseInt(upSeconds / 86400);
  if (days > 0) {
    uptimeString += days;
    uptimeString += ((days == 1) ? " Tag" : " Tage") + ", ";
  }
  if (hours > 0) {
    uptimeString += hours;
    uptimeString += ((hours == 1) ? " Stunde" : " Stunden") + ", ";
  }
  if (mins > 0) {
    uptimeString += mins;
    uptimeString += ((mins == 1) ? " Minute" : " Minuten") + ", ";
  }
  uptimeString += secs;
  uptimeString += ((secs == 1) ? " Sekunde" : " Sekunden");
  uptime.innerHTML = uptimeString;  upSeconds++;  setTimeout("doUptime()",1000);
}
</script>
</head>
<body onLoad="doUptime();">

<div id="uptime" style="font-weight:bold;">&nbsp;</div>

</body>

Woher soll er sich also die Uptime holen, anstatt eben über /proc/uptime zu gehen?

Hinweise wären echt super... :D

Servus, greetz KingChimera
 
Hallo!

50 Tage?
Oder meinst Du eher:
ca. 49 Tage, 17 Stunden, 2 Minuten und rund 46
Sekunden
2.4er Kernel?
Das Problem könnte aber im 2.6er Kernel noch weiter bestehen, denn Suse geht sicherlich davon aus dass niemand sein Desktopsystem tagelang oder gar wochenlang laufen lässt..... und ein Server ist halt kein Desktopsystem.
Dazu auch dieses:
Wetten, Andreas hat mit dem Parameter "desktop" gebootet, so dass HZ
1000 statt 100 ist. Dadurch kommt es eben auch 10mal frueher (nach
49.5 Tagen) zum Ueberlauf der Variablen.
Dass TS die Uptime korrekt anzeigt, lässt mich vermuten dass er sich die Uptime wo anders her holt.
Denkbar währe z.b. dass der TS Dienst guckt wie lange er selbst läuft..... und nicht wie lange das System läuft.

Interessant finde ich auch diese Aussage:
Was liegt Dir eigentlich so viel an der Uptime? Ehrlich gesagt würd ich
nen Admin feuern, wenn er ne 49 Tage Uptime auf der Kiste hätte, weil
da offensichtlich die ganzen Kernel-Sicherheitslöcher und zugehörigen
Bugfixes ignoriert worden sind.
Zum einem lässt sich an der Uptime (zumindest teilweise) erkennen wie "gut" Du dein System pflegst (ein Kernelupdate wird halt erst nach dem Reboot wirksam) und zum anderen könnte die Uptime evtl. auch erahnen lassen dass Du ein GUI laufen hast, was wiederum ein potenzielles Angriffsziel sein könnte.

Für interne Zwecke mag die Uptime ja noch interessant sein..... z.b. um zu sehen wie stabil das System läuft..... aber aussenstehende hat es nicht zu interessieren.
Wenn Du also unbedingt diesen "Schwanzvergleich" brauchst, würde ich mal gucken wie man die Laufzeit einzelner Dienste ermittelt.
Hmm, eine andere Möglichkeit währe es evtl. wenn Du beim Systemstart den Timestamp per Startscript speicherst, diesen dann mit PHP ausliest und mit dem aktuellem Timestamp vergleichst..... die Differenz ist die Uptime.
Ich weiss ja nicht ob es möglich ist zu bestimmen wann genau das Startscript ausgeführt wird, wenn ja dann würde ich den Timestamp in MySQL speichern, andernfalls in eine ASCII Datei.

Quelle der Zitate: Suse Mailinglist, gefunden über Google. :p

Hmm, ich vermute der Thread währe im Linux Board besser aufgehoben.

Gruss Dr Dau
 
Ok, aus der Sicht hab ich das ehrlich gesagt gar nicht gesehen... :D
Ist ja nicht so das ich Webspace vermiete oder so, ist halt nur ein Ausweichwebspace für meiner einer... :D

Aber du hast Recht, hab noch den 2.4er Kernel... ;)

Servus, greetz KingChimera
 
Ob Du den Webspace vermietest oder nicht, spielt keine Rolle..... dann gibt man die Uptime für gewöhnlich in Prozent an. ;)

Wie gesagt, es ist denkbar dass das Problem mit dem 2.6er Kernel auch besteht.
Daher denke ich auch dass es einfacher währe den Weg mit dem speichern des Timestamps zu gehen..... so hättest Du die Uptime vom System.
 
Zurück