2013-03-11 59 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秒