2013-03-11 5 views
6

Linuxの "cat/proc/uptime"と同じ出力が必要です。/proc/uptime in Mac OS X

例えば、/ procの/稼働時間で、あなたは

1884371.64 38646169.12

を取得したいが、すべてのMacの代替で、 "稼働時間" のように、あなたは

を取得したいです

20:25 up 20:26、6ユーザー、平均負荷:3.19 2.82 2.76

cat/proc/uptimeのようにが正確にである必要がありますが、Mac OS Xではこれが必要です。

答えて

6

がそれを手に入れた...

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

は、その後、私はちょうど(読みやすい形式にそれを変換しますどのように覚えていない):

1日0時26分28秒

+0

私は単純にハード境界をカットしたくないので(アウトプットのレイアウトが変わった場合)、次のように選択しました: 'IFS = '='、read -d '、' key value; do eval "boot_time_ $ key = '$ value'" 2>/dev/null; done <<< $(sysctl -n kern.boottime | sed '/^.*{//; s /}.*$/,') 'を実行すると、必要な値を' boot_time_sec'から取り出すことができます'date -jf '%s'" $ boot_time_sec "' – Haravikk

+1

のようなもので変換することができます。この回答には小さな問題が1つあります。あなたの 'cut 'は固定位置の間で文字を取得しています(14から18まで)。これはあなたのシステムでは長時間稼働していなかったために機能しましたが、私にとってはこれは問題を引き起こしました。 この小さな問題を解決するために 'cut'コマンドを変更しました。 'sysctl -n kern.boottime |カット-f4 -d '' |カット-d '、' -f1'。 – Jibran

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

を 1日のようなものを返します。文字は "kern.boottime:{sec ="? また、残りの部分を削除する必要があります...私はこの種のものから始めています。 – rtainc

+1

"' 'kern.boottime'"ビットを取り除く "' sysctl -n kern.boottime' "もあります。 boottime変数は構造体であり、構造体内の変数を取得するための簡単な方法はsysctlコマンドに組み込まれていません。 –

-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 

は、だから私は最初のxを削除するために 'カット' を使用する必要があり、20時間、10分、55秒