如何在几分钟内找出正常运行时间?

时间:2016-02-24 21:38:57

标签: bash shell solaris

如何在几分钟内找出并保存到Solaris上的文件正常运行时间,而无需剪切和转换它?这有什么优雅的方式吗?谢谢你的回答

4 个答案:

答案 0 :(得分:4)

这是一种可靠而准确的方法来获取自Solaris上次启动以来的分钟数:

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

nawk下,srand()函数返回自纪元以来的秒数,而boot_time kstat统计信息返回自启动时的纪元以来的秒数。从后者中减去前者给出了秒数,并将其进一步除以60得出自上次启动以来的分钟数。

答案 1 :(得分:3)

在Solaris上,uptime(1)命令只是w(1)的链接。您可以在https://github.com/illumos/illumos-gate/blob/master/usr/src/cmd/w/w.c找到其源代码。

在那里,您会发现uptime(1)获得/var/run/utmpx中记录的启动时间。就像他们一样,您可以使用getutxent(3)系列函数从此文件中读取数据,并查找ut_type == BOOT_TIME的记录。在此记录中,查看ut_tv字段,它是struct timeval并包含引导时间的秒和微秒。由此可以计算出系统启动的时间。

(编辑:我刚注意到标签。这个解决方案更适合从C程序调用。哦,好吧,也许对某人有用。)

答案 2 :(得分:0)

不完全确定这适用于Solaris但是......

uptime | awk -F ',' ' {print $1} ' | awk ' {print $3} ' | awk -F ':' ' {hrs=$1; min=$2; print hrs*60 + min} '

答案 3 :(得分:0)

@ jilliagre建议的一个小改进是使用kstat(1m)在传递给nawk(1)之前为你提取更多信息:

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

-p表示“可解析输出”,-s选择-n模块名称下的特定统计信息。