欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

linux 当看到 /var/log/messages 有 Out of memory 时 Dec 4 22:37:24 ebs-22618 kernel: Out of memory: Kill process 3593 (httpd) score 13 or sacrifice child 查看此时的内存使用情况

linux 当看到 /var/log/messages 有 Out of memory 时 Dec  4 22:37:24 ebs-22618 kernel: Out of memory: Kill process 3593 (httpd) score 13 or sacrifice child 查看此时的内存使用情况

当你在 Linux 系统日志 /var/log/messages 中看到类似 Out of memory: Kill process 3593 (httpd) score 13 or sacrifice child 的消息时,这表示系统内存不足,内核已经决定杀死一个或多个进程以释放内存。在这种情况下,你可以使用以下命令来查看当前的内存使用情况:

  1. free 命令

    bash复制代码        

    free -h

           

    这个命令会显示系统中内存的使用情况,包括已用、空闲、交换分区等信息,-h 选项表示以人类可读的格式显示(例如,MB、GB)。

  2. top 命令

    bash复制代码        

    top

           

    top 命令提供了一个动态的实时视图,显示系统中各个进程的内存和CPU使用情况。你可以按 M 键来按内存使用量排序进程。

  3. htop 命令(如果已安装):

    bash复制代码        

    htop

           

    htop 是 top 命令的一个更友好的替代,提供了更直观的用户界面和更多的功能。同样,你可以通过按 F6 键(或 Shift + >)然后按 M 来按内存使用量排序进程。

  4. vmstat 命令

    bash复制代码        

    vmstat 1

           

    vmstat 命令提供了关于系统性能的详细信息,包括内存、分页、块IO、陷阱、进程和CPU活动等。1 表示每秒刷新一次输出。

  5. cat /proc/meminfo

    bash复制代码        

    cat /proc/meminfo

           

    这个命令会显示关于内存使用的详细信息,包括内存总量、已用内存、空闲内存、缓存和缓冲区等。

  6. smem 命令(如果已安装):

    bash复制代码        

    smem -s rss= -k

           

    smem 命令提供了关于内存使用的更详细的分析,包括共享内存、私有内存等。-s rss= 选项表示按常驻集大小(RSS)排序,-k 选项表示以KB为单位显示。

通过这些命令,你可以获得系统当前的内存使用情况,并找出哪些进程占用了最多的内存。这有助于你理解为什么会出现内存不足的情况,并采取相应的措施,如增加物理内存、优化应用程序的内存使用、或增加交换分区的大小等。


能够查看占内存消耗的前5个进程吗

是的,你可以查看内存消耗最多的前5个进程。在Linux系统中,有几个命令可以帮助你实现这一点。以下是一些常用的方法:

  1. 使用 ps 命令结合 sort 和 head

    bash复制代码

    ps auxw --sort=-%mem | head -n 6

    这里的 ps auxw 会列出所有用户的所有进程,--sort=-%mem 会按内存使用量降序排序,head -n 6 则会显示前6行(包括表头)。因此,你需要忽略第一行表头,剩下的5行就是内存消耗最多的前5个进程。

  2. 使用 top 命令

    在 top 命令的输出中,你可以按 M 键来按内存使用量排序进程。虽然 top 是动态的,但你可以截图或手动记录前5个进程的信息。

  3. 使用 htop 命令(如果已安装):

    htop 提供了更友好的界面。启动 htop 后,你可以按 F6(或 Shift + >)键,然后选择 %MEM 来按内存使用量排序进程。

  4. 使用 smem 命令(如果已安装):

    smem 命令可以显示更详细的内存使用情况,包括共享和私有内存。你可以使用以下命令来按内存使用量排序进程,并显示前5个:

    bash复制代码

    smem --pid -k -r rss | head -n 6

    这里的 --pid 选项显示进程ID,-k 选项以KB为单位显示,-r rss 选项按常驻集大小(RSS)排序,head -n 6 则显示前6行。

请注意,由于进程是动态变化的,所以你需要在实际需要查看内存使用情况的时候运行这些命令。此外,不同的命令可能会显示略有不同的内存使用量,因为它们计算的内存类型(如RSS、PSS、虚拟内存等)和方式可能有所不同。



普通分类: