2013-03-11 61 views
6

我需要与Linux的“cat/proc/uptime”相同的EXACT输出。Mac OS X中的/ proc/uptime

例如,/ proc中/正常运行时间,你会得到

1884371.64 38646169.12

但任何一台Mac的替代,如 “正常运行时间”,你会得到

20:25上午20:26,6位用户,平均负载:3.19 2.82 2.76

我需要它是正好像猫/ proc/uptime,但在Mac OS X上。

回答

6

明白了...

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

然后我转换,为可读格式(不记得如何):

1日00:26:28

+0

由于我不喜欢简单地削减硬边界(如果输出布局发生变化),我选择了以下内容:'while IFS ='=',read -d','key value;做eval“boot_time_ $ key ='$ value'”2>/dev/null;完成<<< $(sysctl -n kern.boottime | sed's /^.*{//; s /}.*$/,/')',然后您可以简单地从'boot_time_sec' ,并可以将它转换为'date -jf'%s'“$ boot_time_sec”' – Haravikk 2014-09-25 10:20:47

+1

这个答案的一个小问题。你的剪辑是在固定位置(从14到18)之间获取字符。这在你的情况下很有效,因为你的系统很久没有启动了,但是对我而言这造成了问题。 我改变了'cut'命令来解决这个小问题。 'sysctl -n kern.boottime | cut -f4 -d''|剪切-d','-f1'。 – Jibran 2015-12-25 12:30:21

3

在Macintosh上根本没有“/ proc”目录。

On MacOS, you can do a command like

sysctl kern.boottime 

,你会得到这样的回应:

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

所以我应该用 '一刀切' 来删除第一个X字母,这将是“kern.boottime:{sec =”? 我也需要删除其余的...我开始在这种东西。 – rtainc 2013-03-11 01:01:22

+1

还有''sysctl -n kern.boottime'“,它除去了”'kern.boottime'“位。 boottime变量是一个结构体,我无法看到内置于sysctl命令中的简单方法来获取结构体内的变量。 – 2013-03-11 01:04:24

-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 

将返回类似 1天,20小时,10分钟后,55秒