top 命令

top 命令是一个非常常用的Linux工具,用于实时显示系统中进程的动态运行信息。它提供了一个持续更新的关于系统进程和资源占用情况的视图,包括CPU、内存使用情况等。

  1. 系统概览: 显示当前时间、系统运行时间、登录用户数、系统负载平均值(1分钟、5分钟、15分钟)。
  2. 任务(进程)统计: 显示总进程数、运行中的进程数、睡眠中的进程数、停止的进程数和僵尸进程数。
  3. CPU使用情况: 显示用户空间占用的CPU百分比、系统空间占用的CPU百分比、改变过优先级的进程占用的CPU百分比、空闲的CPU百分比等。
  4. 内存使用情况: 显示物理内存总量、使用中的内存、空闲内存、缓冲/缓存使用的内存。
  5. 进程列表: 显示各个进程的详细信息,包括进程ID(PID)、所属用户、优先级(PR)、nice值(NI)、虚拟内存占用(VIRT)、常驻内存占用(RES)、共享内存(SHR)、进程状态(S)、CPU占用百分比(%CPU)、内存占用百分比(%MEM)和运行时间(TIME+)、命令名称(COMMAND)。

在 top 命令运行时,你可以使用键盘快捷键来控制其行为,例如:

  • h 或 ?:显示帮助信息。
  • k:通过指定PID来杀死一个进程。
  • u:显示指定用户的进程。
  • P:根据CPU使用率排序。
  • M:根据内存使用率排序。
  • q:退出 top

top 命令是一个交互式命令,你可以在其运行时进行各种操作。它是系统管理员和用户监控系统状态的重要工具。

其他功能强大的性能监控工具

在Linux中,除了top命令之外,还有几个类似的命令可以用来监控系统的性能和进程信息:

  1. htop: htoptop命令的一个增强版本,它提供了一个彩色的交互式界面,支持进程树状视图,并且可以使用键盘操作来管理进程(如杀死进程)。htop显示的信息更加直观,用户体验更好,但它可能不是所有Linux发行版的标准部分,可能需要单独安装。
  2. atop: atop是另一个系统和进程监控工具,它可以显示关于CPU、内存、磁盘和网络等资源的详细信息。atop还可以记录系统的活动,以便之后进行分析。
  3. glances: glances是一个跨平台的监控工具,它提供了一个综合的视图来展示系统的各种统计信息。glances使用Python编写,可以通过网络监控远程服务器。
  4. nmon: nmon(Nigel’s Monitor)是一个性能监控工具,它可以显示CPU、内存、网络、磁盘、文件系统和NFS等的性能信息。nmon也可以将数据保存到文件中,以便后续分析。
  5. bpytop / bashtop: 这些是较新的性能监控工具,提供了一个现代化和视觉上吸引人的界面。它们显示系统资源使用情况的方式类似于htop,但界面更加现代化。

这些工具都有自己的特点和优势,你可以根据自己的需求和喜好选择使用。例如,如果你需要一个简单的命令行工具,top可能就足够了。如果你需要更多的功能和更好的用户界面,htopglances可能是更好的选择。如果你需要进行长期的性能分析,atopnmon可能更适合你的需求。

uptime 命令

uptime命令来查看服务器已经运行了多长时间。该命令会显示系统已经运行的时间、当前登录的用户数量以及系统在过去一定时间内的平均负载。

uptime

输出将类似于:

 14:22:18 up 10 days,  3:00,  1 user,  load average: 0.00, 0.01, 0.05

这里的14:22:18是当前系统的时间,up 10 days, 3:00表示系统已经运行了10天零3小时,1 user表示当前有1个用户登录,load average: 0.00, 0.01, 0.05表示过去1分钟、5分钟和15分钟的平均负载。
负载平均值是一个衡量系统活动的指标,它表示在特定时间间隔内,系统中等待CPU时间的进程平均数量,包括正在运行的进程和等待CPU资源的进程。

如果负载平均值是1,对于单核CPU来说,这意味着CPU完全被利用,但没有过载;如果是多核CPU,负载1意味着整体上还有空闲的处理能力,因为总体负载还没有超过CPU核心的数量。

CPU 过载的影响

  1. 响应变慢:用户和应用程序可能会经历延迟,因为进程需要等待CPU时间。
  2. 性能下降:系统可能无法及时处理所有任务,导致性能下降。
  3. 资源竞争:进程之间会争夺有限的CPU资源,可能导致优先级较低的任务长时间得不到处理。
  4. 系统不稳定:在极端情况下,系统可能变得不稳定,甚至出现服务中断。
  5. 任务超时:某些依赖于及时响应的任务可能会因为超时而失败。
  6. 用户体验恶化:对于需要实时交互的应用,如游戏或视频会议,用户可能会遇到卡顿或中断。

如果要解决过载问题,可能需要优化应用程序、增加硬件资源(如更多的CPU核心)、负载均衡或限制系统上运行的进程数量。

CPU 过载的常见原因

  1. 资源密集型任务:运行大量或资源密集型的应用程序和服务,如数据分析、视频处理或大规模编译作业。
  2. 高并发请求:服务器面临高并发请求,如网站流量激增或DDoS攻击。
  3. 不足的硬件资源:硬件资源(如CPU、内存)不足以支持当前的工作负载。
  4. 配置问题:系统配置不当,如内存不足或错误的服务配置导致资源无法有效利用。
  5. 软件错误:应用程序或系统软件中的错误,如内存泄漏,导致资源逐渐耗尽。
  6. 依赖服务延迟:依赖的外部服务响应慢或不可用,导致任务堆积。
  7. 计划外的事件:意外事件,如数据中心故障或网络问题,导致负载突然转移到其他服务器。
  8. 安全事件:恶意软件、病毒或黑客攻击可能会消耗大量资源。

w 命令

w命令,不仅显示系统运行时间,还显示了登录用户的信息和他们正在做什么,输出的第一行包含了系统运行时间的信息,top也会在其输出的顶部显示系统运行时间

查看当前的登录用户

  1. who 命令 这个命令会显示当前登录系统的所有用户的信息,包括用户名、登录的终端、登录时间等。
  2. w 命令 w 命令提供了比who命令更详细的信息,包括用户的登录时间、空闲时间、从哪个IP地址登录的,以及用户正在执行的命令。
  3. users 命令 users 命令会列出当前登录的所有用户的用户名,但不提供其他额外信息。
  4. last 命令 last 命令用于显示最近用户登录和注销的信息。它读取/var/log/wtmp文件的内容,并列出所有登录记录。如果你只想看当前登录的用户,可以结合grep命令使用。
    last | grep still
  5. finger 命令(如果安装了的话) finger命令提供了用户的详细信息,包括登录名、实际姓名、终端名、写状态、空闲时间、登录时间、办公室位置等。不是所有的Linux发行版都默认安装了finger命令,可能需要你手动安装。
  6. 查看/var/run/utmp文件 这个文件包含了当前登录用户的信息。通常不直接查看这个文件,而是使用上述命令来查询,因为这些命令就是读取这个文件来获取信息的。