2013-03-11 17 views
6

Ich brauche den GENAUEN gleichen Ausgang wie Linux "cat/proc/uptime"./proc/uptime unter Mac OS X

Zum Beispiel mit/proc/uptime, dann würden Sie

1884371,64 38646169,12

aber mit jedem Mac Alternative, wie "uptime" erhalten, würden Sie

erhalten

20.25 bis 20.26 Uhr, 6 Benutzer, Belastung im Durchschnitt: 3,19 2,82 2,76

Ich brauche es genau wie cat/proc/uptime, aber auf Mac OS X.

Antwort

6

Verstanden ...

$sysctl -n kern.boottime | cut -c14-18 
87988 

Dann habe ich konvertiert nur, dass zu lesbaren Format (erinnere mich nicht wie):

1 Tag 00:26:28

+0

Da ich nicht einfach auf harte Grenzen schneiden möchte (falls sich das Layout des Outputs ändert), habe ich mich für folgendes entschieden: 'while IFS = '=', lese -d ',' key value; do eval "boot_time_ $ schlüssel = '$ value'" 2>/dev/null; Fertig <<< $ (sysctl -n kern.boottime | sed 's /^.*{//; s /}.*$/,/') ', dann kannst du einfach den gewünschten Wert aus' boot_time_sec' ziehen , und kann es mit etwas wie 'date -jf'% s '"$ boot_time_sec" ' – Haravikk

+1

ein kleines Problem mit dieser Antwort konvertieren. Dein 'cut' bekommt Zeichen zwischen festen Positionen (von 14 bis 18). Das hat in Ihrem Fall funktioniert, weil Ihr System lange nicht in Betrieb war, aber für mich hat das Probleme verursacht. Ich habe den 'cut' Befehl geändert, um dieses kleine Problem zu beheben. 'sysctl -n kern.boottime | Schnitt -f4 -d '' | Schnitt -d ',' -f1'. – Jibran

3

Es gibt einfach keine "/ proc" Verzeichnis auf dem Macintosh.

On MacOS, you can do a command like:

sysctl kern.boottime 

und Sie erhalten eine Antwort wie erhalten:

kern.boottime: { sec = 1362633455, usec = 0 } Wed Mar 6 21:17:35 2013 
+0

Also soll ich 'schneiden' verwenden, um die ersten x zu entfernen Buchstaben, die "kern.boottime: {sec ="? Ich muss auch den Rest entfernen ... Ich beginne auf diese Art von Sachen. – rtainc

+1

gibt es auch "' sysctl -n kern.boottime' ", was das' 'kern.boottime''-Bit löscht. Die Variable boottime ist eine Struktur, und ich kann keinen einfachen Weg sehen, der in den Befehl sysctl eingebaut ist, um die Variablen innerhalb der Struktur zu erhalten. –

-1
boottime=`sysctl -n kern.boottime | awk '{print $4}' | sed 's/,//g'` 
unixtime=`date +%s` 
timeAgo=$(($unixtime - $boottime)) 
uptime=`awk -v time=$timeAgo 'BEGIN { seconds = time % 60; minutes = int(time/60 % 60); hours = int(time/60/60 % 24); days = int(time/60/60/24); printf("%.0f days, %.0f hours, %.0f minutes, %.0f seconds", days, hours, minutes, seconds); exit }'` 
echo $uptime 

Sie kommen wieder so etwas wie 1 Tag, 20 Stunden, 10 Minuten, 55 Sekunden