有人能给出一些关于如何从顶部输出记录前 5 行的提示吗?我在考虑使用 grep,但不知道如何选择行。
我需要了解。是什么原因导致服务器有时会冻结。也许有一些工具可以解决此问题?
谢谢 ;)
答案1
您可以通过以下方式执行您的请求:
~$ top -n1 | head -5
除了 Janne 的命令列表和 symcbean 建议检查系统日志外,我建议在顶上:
...
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).
此外,使用 atop,您可以回溯检查服务器当时的情况,因为它将数据存储在日志文件中。例如,我在脚本中编写了以下代码片段,当服务器 loadavg 超过任意限制时,该脚本将启动。然后,atop 信息和其他相关系统信息将通过邮件发送到我的帐户:
atop -r /var/log/atop.log -M -b "$(date +'%H:%M' -d '30 minutes ago')" -e "$(date -d now +'%H:%M')"
基本上,我会得到一份有关服务器实际状态以及过去 30 分钟内发生的情况的报告(其中包含每 10 分钟间隔的详细信息)
答案2
首先,服务器冻结不太可能是由于用户进程造成的。其次,即使如此,它为什么会成为导致问题的前 5 个原因之一?
如果您已经检查了日志但什么也没发现,那么请尝试实施看门狗以将心跳写入日志 - 并检查系统是否真的冻结(而不是在远程访问时观察到暂停)。
冻结持续多长时间?频率如何?负载恢复时是否有波动?您在哪里观察到这些冻结?这是专用机还是虚拟机?
答案3
top | head -n 12 >>your_file.txt
可以,但有警告:它也会保存所有控制字符和 ANSI 字符,因此使用less
etc 浏览输出不太好。而且,说实话,这几乎不是捕获反叛进程的最佳方法。
对于总体趋势有关服务器性能的工具(如 snmp+mrtg、Cacti 或 Munin)非常有用 - 它们可以绘制 CPU 使用率、内存使用率等图表。对于命令行,使用sysstat
包及其sadc
守护程序和sar
报告实用程序还可以为您提供有关服务器运行情况的视图。psacct
包添加了 BSD 记帐,可以为您提供有关每个用户/进程所用时间的总体统计信息。
实时查看只需登录您的服务器并按照诸如iostat -x 1
、vmstat
和 之类的内容进行操作即可top
。
考虑设置单独的系统日志服务器如果您有备用硬件(或已安装中央系统日志服务器),请使用它!您只需配置服务器以将其系统日志和其他日志发送到系统日志服务器即可。有时可能会发生这些冻结(如果由内核崩溃引起),因此您的服务器无法将信息写入磁盘,但它能够将其最后的文字发送到系统日志服务器。
使用 memtest86 测试您的服务器如果您可以让服务器离线一晚左右,让其运行memtest86
以查看是否存在 RAM 故障或其他问题。
抱歉,由于您实际上并没有告诉我们有关您的问题的详细信息,因此我无法提供更多帮助。