Você pode fazer o que você solicitou:
~$ top -n1 | head -5
Além da lista de comandos de Janne e dos conselhos do symcbean para verificar seus registros do sistema, sugiro em cima :
...
It shows the occupation of the most critical hardware
resources (from a performance point of view) on system level, i.e. cpu,
memory, disk and network.
It also shows which processes are responsible for the indicated load
with respect to cpu- and memory load on process level. Disk load is
shown if per process "storage accounting" is active in the kernel or if
the kernel patch 'cnt' has been installed. Network load is only shown
per process if the kernel patch 'cnt' has been installed...
[...]
Every interval (default: 10 seconds) information is shown about the
resource occupation on system level (cpu, memory, disks and network
layers), followed by a list of processes which have been active during
the last interval (note that all processes that were unchanged during
the last interval are not shown, unless the key 'a' has been pressed).
If the list of active processes does not entirely fit on the screen,
only the top of the list is shown (sorted in order of activity).
Além disso, no topo, você pode verificar de volta no tempo qual era a situação do seu servidor, pois ele armazena esses dados em seus arquivos de log. Por exemplo, eu tenho o seguinte trecho de código em um script que é iniciado quando um servidor loadavg passa um limite arbitrário. As informações sobre o topo e outras informações relacionadas ao sistema são enviadas por e-mail para minha conta:
atop -r /var/log/atop.log -M -b "$(date +'%H:%M' -d '30 minutes ago')" -e "$(date -d now +'%H:%M')"
Basicamente eu recebo um relatório do estado atual do servidor e o que estava acontecendo nele nos últimos 30 minutos (com informações detalhadas de cada intervalo de 10 minutos)