[英]How to find out uptime in minutes?
如何在幾分鍾之內找出並保存到Solaris的文件正常運行時間而無需進行轉換和轉換? 有什么優雅的方法嗎? 謝謝答案
這是獲取自Solaris上一次引導以來的分鍾數的可靠且准確的方法:
kstat -n system_misc |
nawk '/boot_time/ {printf("%d minutes\n",(srand()-$2)/60)}'
在nawk
, srand()
函數返回自紀元以來的秒數,而boot_time
kstat
統計信息返回自引導紀元以來的秒數。 從后者減去前者得到秒數,再將其除以60得到自上次引導以來的分鍾數。
在Solaris上, uptime(1)
命令只是w(1)
的鏈接。 您可以在https://github.com/illumos/illumos-gate/blob/master/usr/src/cmd/w/wc中找到其源代碼。
在那里,您會發現uptime(1)
獲得/var/run/utmpx
記錄的啟動時間。 就像他們一樣,您可以使用getutxent(3)
函數系列從此文件讀取數據,並使用ut_type == BOOT_TIME
查找記錄。 在此記錄中,查看ut_tv
字段,它是一個struct timeval
,包含啟動時間的秒和微秒。 由此,您可以計算系統已啟動多長時間。
(編輯:我剛剛注意到shell標記。此解決方案更適合從C程序調用。哦,好吧,也許對某人有用。)
不能完全確定這是否可以在Solaris上使用,但是...
uptime | awk -F ',' ' {print $1} ' | awk ' {print $3} ' | awk -F ':' ' {hrs=$1; min=$2; print hrs*60 + min} '
@jilliagre建議的一個小改進是在傳遞給nawk(1)之前,使用kstat(1m)為您提取更多信息:
$ kstat -p -n system_misc -s boot_time| nawk '{printf("%d minutes\n",(srand()-$2)/60)}'
26085 minutes
-p
表示“可解析的輸出”, -s
選擇-n
模塊名稱下的特定統計信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.