与负载一样,通过 uptime 获得的数据非常难以解析。同样,如果您有/proc/文件系统,加以利用。我编写了以下代码来仅输出系统已运行的时间
#!/bin/bash # # upt - show just the system uptime, days, hours, and minutes let upSeconds="$(cat /proc/uptime) && echo ${temp%%.*})" let secs=$((${upSeconds}%60)) let mins=$((${upSeconds}/60%60)) let hours=$((${upSeconds}/3600%24)) let days=$((${upSeconds}/86400)) if [ "${days}" -ne "0" ] then echo -n "${days}d" fi echo -n "${hours}h${mins}m" |
如果系统运行时间少于一天,输出看起来像“1h31m”,如果系统运行时间超过一天,则输出看起来像“14d17h3m”。您可以调整输出格式以使其看起来符合您的需求。这是在与 David Osolkowski 的电子邮件讨论后演变而来的,他给了我一些想法。
在我编写该脚本之前,我与 David O 发了几封电子邮件,他说 “我和几个伙计在 IRC 上开始使用 sed 进行黑客攻击,得到了这个:uptime | sed -e 's/.* \(.* days,\)\? \(.*:..,\) .*/\1 \2/' -e's/,//g' -e 's/ days/d/' -e 's/ up //'。它很丑陋,并且没有像应该的那样充分利用正则表达式,但是它可以工作。不过,在 P75 上它非常慢,所以我删除了它。” 考虑到 uptime 输出根据系统运行时间的长短而变化很大,我对他们能做得如此出色印象深刻。您可以在没有/proc/文件系统的系统上使用它,但正如他所说,它可能会很慢。
相对速度:“upt”脚本在未加载的 486SX25 上大约需要 0.68 秒(作为函数调用时,时间减半)。与 David 的猜测相反,他使用 sed 解析 “uptime” 的输出仅需 0.22 秒。