簡體   English   中英

如何在幾分鍾內找出正常運行時間?

[英]How to find out uptime in minutes?

如何在幾分鍾之內找出並保存到Solaris的文件正常運行時間而無需進行轉換和轉換? 有什么優雅的方法嗎? 謝謝答案

這是獲取自Solaris上一次引導以來的分鍾數的可靠且准確的方法:

kstat -n system_misc | 
    nawk '/boot_time/ {printf("%d minutes\n",(srand()-$2)/60)}'

nawksrand()函數返回自紀元以來的秒數,而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 ,包含啟動時間的秒和微秒。 由此,您可以計算系統已啟動多長時間。

(編輯:我剛剛注意到標記。此解決方案更適合從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM