如何在几分钟内找出正常运行时间?
How to find out uptime in minutes?
如何在不剪切和转换的情况下在几分钟内找出并保存到 Solaris 上的文件正常运行时间?有什么优雅的方法吗?感谢回答
不完全确定这是否适用于 Solaris 但是...
uptime | awk -F ',' ' {print } ' | awk ' {print } ' | awk -F ':' ' {hrs=; min=; print hrs*60 + min} '
在 Solaris 上,uptime(1)
命令只是 link 到 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
并且包含启动时间的秒和微秒。由此您可以计算出系统已经运行了多长时间。
(编辑:我刚刚注意到 shell 标记。此解决方案更适合从 C 程序调用。哦,好吧,也许对某人有用。)
这是获取自上次在 Solaris 上启动以来的分钟数的可靠且准确的方法:
kstat -n system_misc |
nawk '/boot_time/ {printf("%d minutes\n",(srand()-)/60)}'
在 nawk
下,srand()
函数 returns 自纪元以来的秒数,而 boot_time
kstat
统计 returns自启动时纪元以来的秒数。后者减去前者得到秒数,再除以 60 得到自上次启动后的分钟数。
@jilliagre 的建议的一个小改进是在传递给 nawk(1) 之前使用 kstat(1m) 为您提取更多信息:
$ kstat -p -n system_misc -s boot_time| nawk '{printf("%d minutes\n",(srand()-)/60)}'
26085 minutes
-p
表示 "parseable output",-s
选择 -n
模块名称下方的特定统计信息。
如何在不剪切和转换的情况下在几分钟内找出并保存到 Solaris 上的文件正常运行时间?有什么优雅的方法吗?感谢回答
不完全确定这是否适用于 Solaris 但是...
uptime | awk -F ',' ' {print } ' | awk ' {print } ' | awk -F ':' ' {hrs=; min=; print hrs*60 + min} '
在 Solaris 上,uptime(1)
命令只是 link 到 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
并且包含启动时间的秒和微秒。由此您可以计算出系统已经运行了多长时间。
(编辑:我刚刚注意到 shell 标记。此解决方案更适合从 C 程序调用。哦,好吧,也许对某人有用。)
这是获取自上次在 Solaris 上启动以来的分钟数的可靠且准确的方法:
kstat -n system_misc |
nawk '/boot_time/ {printf("%d minutes\n",(srand()-)/60)}'
在 nawk
下,srand()
函数 returns 自纪元以来的秒数,而 boot_time
kstat
统计 returns自启动时纪元以来的秒数。后者减去前者得到秒数,再除以 60 得到自上次启动后的分钟数。
@jilliagre 的建议的一个小改进是在传递给 nawk(1) 之前使用 kstat(1m) 为您提取更多信息:
$ kstat -p -n system_misc -s boot_time| nawk '{printf("%d minutes\n",(srand()-)/60)}'
26085 minutes
-p
表示 "parseable output",-s
选择 -n
模块名称下方的特定统计信息。