如何通过Shell脚本在终端上显示实时结果?


Answers:



13

您可以使用watch(1)命令定期运行脚本:

watch -n 1 myscript.sh

这将myscript.sh每隔1秒钟运行一次,以在每次运行之间清除屏幕,并在角落显示一个时间戳。您可以使用该-d选项,它甚至可以突出显示每次运行的输出差异。


我只是在想如何使用手表回答它。
凯文M

我没有watch。你可以再详细一点吗?什么操作系统?
克里斯·佩奇

2

通常,大多数数据在/ proc虚拟文件系统原语中公开。每个进程在/ PID目录中的/ proc中都有一个条目。因此,/ proc / 5437将具有用于5437进程的原语。在那儿读取原语并进行适当的解析将使您接近top所做的事情。

Top实际上是通过调用特定的函数调用来工作的,这些函数直接从内核中提取此信息,而不是从文件中提取信息。要从bash中执行相同操作,您必须将其从/ proc虚拟文件系统中拉出,或者将其从其他调用中提取出来,例如to ps

至于实时性,这在top提供的详细程度上并不是很可行。您可以对时间进行足够精细的切割,使其看起来是实时的,但是您仍将获得时间切片。


2

嗯,如果您需要top更长的输出时间,而不仅仅是检查程序是否运行良好,我建议使用htop

它为您提供大量实时信息,并且更易于控制和管理。

您可以更改输出的布局,例如条形图和列。


我相信他在问如何编写一个定期轮询而不是关于top或htop的应用程序。
克里斯(Chris)2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.