我需要與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上。
我需要與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上。
明白了...
$sysctl -n kern.boottime | cut -c14-18
87988
然後我轉換,爲可讀格式(不記得如何):
1日00:26:28
在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
所以我應該用 '一刀切' 來刪除第一個X字母,這將是「kern.boottime:{sec =」? 我也需要刪除其餘的...我開始在這種東西。 – rtainc 2013-03-11 01:01:22
還有''sysctl -n kern.boottime'「,它除去了」'kern.boottime'「位。 boottime變量是一個結構體,我無法看到內置於sysctl命令中的簡單方法來獲取結構體內的變量。 – 2013-03-11 01:04:24
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秒
由於我不喜歡簡單地削減硬邊界(如果輸出佈局發生變化),我選擇了以下內容:'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
這個答案的一個小問題。你的剪輯是在固定位置(從14到18)之間獲取字符。這在你的情況下很有效,因爲你的系統很久沒有啓動了,但是對我而言這造成了問題。 我改變了'cut'命令來解決這個小問題。 'sysctl -n kern.boottime | cut -f4 -d''|剪切-d','-f1'。 – Jibran 2015-12-25 12:30:21