来源丨Linux云计算网络

mp.weixin.qq.com/s/7AQNhK4AO3QIkGR3OPszgg

比较常用的是两种方法:使用 top 命令和 ps 命令,其中 top 命令更好用一些,大家可以根据自己的需求决定使用哪个。

使用 top

top 命令类似于 Windows 的任务管理器,能够显示 Linux 系统中运行的进程的动态实时视图。

默认情况下,top 输出结果是按 CPU 占用进行排序,每 5s 更新一次结果。我们可以使用 top-b|head-50 显示排前 50 的占用 CPU 最高的进程。

# top -b | head -50
top - 00:19:17 up 14:23, 1 user, load average: 2.46, 2.18, 1.97
Tasks: 306 total, 1 running, 305 sleeping, 0 stopped, 0 zombie
%Cpu0: 10.4 us, 3.0 sy, 0.0 ni, 83.9 id, 0.0 wa, 1.3 hi, 1.3 si, 0.0 st
%Cpu1: 17.0 us, 3.0 sy, 0.0 ni, 78.7 id, 0.0 wa, 0.3 hi, 1.0 si, 0.0 st
%Cpu2: 13.0 us, 4.0 sy, 0.0 ni, 81.3 id, 0.0 wa, 0.3 hi, 1.3 si, 0.0 st
%Cpu3: 12.3 us, 3.3 sy, 0.0 ni, 82.5 id, 0.3 wa, 0.7 hi, 1.0 si, 0.0 st
%Cpu4: 12.2 us, 3.0 sy, 0.0 ni, 82.8 id, 0.7 wa, 0.3 hi, 1.0 si, 0.0 st
%Cpu5: 6.4 us, 2.7 sy, 0.0 ni, 89.2 id, 0.0 wa, 0.7 hi, 1.0 si, 0.0 st
%Cpu6: 26.7 us, 3.4 sy, 0.0 ni, 68.6 id, 0.0 wa, 0.7 hi, 0.7 si, 0.0 st
%Cpu7: 15.6 us, 4.0 sy, 0.0 ni, 78.8 id, 0.0 wa, 0.7 hi, 1.0 si, 0.0 st
KiBMem: 16248556 total, 1448920 free, 8571484 used, 6228152 buff/cache
KiBSwap: 17873388 total, 17873388 free, 0 used. 4596044 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2179 daygeek 203106324613584327564 S 79.53.814:19.76WebContent
1714 daygeek 204603372974600403504 S 20.26.065:18.91 firefox
1227 daygeek 204192012376332180348 S 13.92.320:43.26 gnome-shell
18324 daygeek 203296192766040127948 S 6.34.79:18.12WebContent
1170 daygeek 201008264572036546180 S 6.03.518:07.85Xorg
4684 daygeek 2033637081.1g1.0g S 3.67.213:49.92VirtualBoxVM
4607 daygeek 2045910401.7g1.6g S 3.011.014:09.65VirtualBoxVM
1211 daygeek 9-1128652682103216588 S 2.00.110:46.37 pulseaudio
4562 daygeek 2010968882881221044 S 1.70.24:42.93VBoxSVC
1783 daygeek 203123888376896134788 S 1.32.339:32.56WebContent
3286 daygeek 203089736404088184968 S 1.02.541:57.44WebContent

上面的命令解释如下:

  • -b:批次档模式

  • head -50:显示输出结果的前 50 个

  • PID:进程的 ID

  • USER:进程的归属者

  • PR:进程的等级

  • NI:进程的 NICE 值

  • VIRT:进程使用的虚拟内存

  • RES:进程使用的物理内存

  • SHR:进程使用的共享内存

  • S:这个值表示进程的状态: S = 睡眠,R = 运行,Z = 僵尸进程

  • %CPU:进程占用的 CPU 比例

  • %MEM:进程使用的 RAM 比例

  • TIME+:进程运行了多长时间

  • COMMAND:进程名字

如果想看进程的完整信息,可以加 -c 参数,如 top-b-c|head-50

使用 ps

ps 就是进程状态的缩写,可以显示当前运行进程的详细信息,如用户名、用户 ID、CPU 使用率、内存使用、进程启动日期时间、命令名等等。

使用 ps-eo pid,ppid,%mem,%cpu,cmd--sort=-%cpu|head 可以显示占用 CPU 较高的进程信息(注意 --sort=-%cpu)。如下:

# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | headPID PPID %MEM %CPU CMD
1852717144.240.3/usr/lib/firefox/firefox -contentproc -childID 18-isForBrowser -prefsLen 10002-prefMapSize 213431-parentBuildID 20191031132559-greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab171411525.68.0/usr/lib/firefox/firefox --new-window1832417144.96.3/usr/lib/firefox/firefox -contentproc -childID 16-isForBrowser -prefsLen 10002-prefMapSize 213431-parentBuildID 20191031132559-greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab328617142.05.1/usr/lib/firefox/firefox -contentproc -childID 14-isForBrowser -prefsLen 8078-prefMapSize 213431-parentBuildID 20191031132559-greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab178317143.04.5/usr/lib/firefox/firefox -contentproc -childID 1-isForBrowser -prefsLen 1-prefMapSize 213431-parentBuildID 20191031132559-greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab122711522.32.5/usr/bin/gnome-shell117011683.52.2/usr/lib/Xorg vt2 -displayfd 3-auth /run/user/1000/gdm/Xauthority-nolisten tcp -background none -noreset -keeptty -verbose 31686517142.52.1/usr/lib/firefox/firefox -contentproc -childID 15-isForBrowser -prefsLen 10002-prefMapSize 213431-parentBuildID 20191031132559-greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab217917142.71.8/usr/lib/firefox/firefox -contentproc -childID 6-isForBrowser -prefsLen 7821-prefMapSize 213431-parentBuildID 20191031132559-greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab

上命令的解释如下:

  • -e:选择所有进程

  • -o:自定义输出格式

  • –sort=-%cpu:基于 CPU 使用率对输出结果排序

  • head:显示结果的前 10 行

  • PID:进程的 ID

  • PPID:父进程的 ID

  • %MEM:进程使用的 RAM 比例

  • %CPU:进程占用的 CPU 比例

  • Command:进程名字

如果想看命令名字而不是命令的绝对路径,可以:

# ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head
PID PPID %MEM %CPU COMMAND
1852717144.140.4WebContent
171411525.78.0 firefox
1832417144.96.3WebContent
328617142.05.1WebContent
178317143.04.5WebContent
122711522.32.5 gnome-shell
117011683.52.2Xorg
1686517142.42.1WebContent
217917142.71.8WebContent

面试必问:CPU 占用高,如何一击即中!相关推荐

  1. golang 数组 最后一个_面试必问:Golang高阶Golang协程实现原理

    1 01 引言 实现并发编程有进程,线程,IO多路复用的方式.(并发和并行我们这里不区分,如果CPU是多核的,可能在多个核同时进行,我们叫并行,如果是单核,需要排队切换,我们叫并发). 1.1 进程和 ...

  2. linux驱动工程面试必问知识点

    linux内核原理面试必问(由易到难) 简单型 1:linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些? 2:linux中内存划分及如何使用?虚拟地址及物理地址的概念及彼此之间的转化, ...

  3. Android面试必问框架原理

    Android面试必问框架原理 volatile的实现原理 synchronized的实现原理 join方法实现原理 CAS无锁编程的原理 ReentrantLock的实现原理 AQS的大致实现思路 ...

  4. 面试必问:多线程与线程池

    前言 前几章都在讲一些锁的使用和原理,主要是为了保证多线程情况下变量的原子性,但这并不是说多线程不好,合理利用还是有好处的.至于什么好处,看下面内容就懂了,先打个比方吧(谁叫比方,上来挨打):假如你体 ...

  5. 互联网公司面试必问的mysql题目(下)

    这是mysql系列的下篇,上篇文章地址我附在文末. 什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构.一个非常恰 ...

  6. 线程同步有几种方法_架构师面试必问的多线程状态切换及常用方法

    架构师面试必问的多线程状态切换及常用方法 一.问题背景 Java架构师面试中,多线程状态切换及常用方法几乎是必问的,要掌握创建多线程的方式和方法. 二.创建多线程的几种方式 2.1方式一继承Threa ...

  7. Android系统框架-Androi的面试必问部分

    "Android系统框架"-Androi的面试必问部分 安卓系统框架层的详解: 首先我们先看看框架结构图: 通过图片可知,从上到下分为了四层:"应用程序"层-& ...

  8. 【Android面试】Android中高级开发面试必问,7年外包一飞冲天

    Andorid 开发在前两年也非常火热,但随着客户端开发招聘回归理性,行业已经越来越成熟,岗位招聘也就自然而然地变"卷"了.这一点,身为程序员老鸟的我深有体会. 年初,我就开始投递 ...

  9. 面试必问的CAS,你懂了吗?

    微信搜索[程序员囧辉],关注这个坚持分享技术干货的程序员. 我的最新文章:BAT 老兵的经验之谈,成长路上这个道理越早知道越好 目录 概述 案例 CAS是什么? 源码分析 intel手册对lock前缀 ...

  10. 99. 中高级开发面试必问的Redis,看这篇就够了

    中高级开发面试必问的Redis,看这篇就够了! 一.概述 二.数据类型 STRING LIST SET HASH ZSET 三.数据结构 字典 跳跃表 四.使用场景 计数器 缓存 查找表 消息队列 会 ...

最新文章

  1. es6总结(一) ——开发环境
  2. 系统单据号生成规则推荐
  3. 递归行为时间复杂度估算
  4. python元编程详解
  5. Java客户端操作elasticsearch--查询索引库(带分页)
  6. linux windows主题下载官网,Linux Deepin 15.10.2 桌面kwin主题App美化
  7. python中lambda函数对时间排序_python – 使用lambda函数排序()
  8. .net持续集成sonarqube篇之sonarqube安装与基本配置
  9. 常见Struts、Hibernate、Spring、J2EE、ibatis、Oracle等开发框架架构图及其简介
  10. acm中c语言标准输入输出,ACM竞赛之输入输出
  11. 明解c语言答案第11章,《明解C语言第3版.入门篇》练习代码 第11章
  12. ios6.0_6.1_苹果手机_evasion_完美越狱
  13. 那个程序员的 Linux 常用软件清单 | Linux 工具篇
  14. 数据分析宝典(上):四步轻松搞定指标
  15. 手把手教你阿里云服务器搭建网站(超详细图文)
  16. 安卓接入讯飞语音识别
  17. Tensorflow学习四---高阶操作
  18. 关于各种职业的英文单词zz
  19. java.lang.OutOfMemoryError
  20. Android 毕业设计高仿新浪微博客户端(内附源码)

热门文章

  1. Python logging使用
  2. 个人博客(前端菜鸡)持续开发中,可前往 欢迎访问. www.amayaliu.cn
  3. 记一次LAMP环境搭建
  4. intellij idea run configurations配置共享
  5. elasticsearch Java API 索引API
  6. C#操作MySQL数据库的简单例子
  7. DVB-C系统中QAM调制与解调仿真
  8. ffmpeg加入libass
  9. Mediasoup简介及其基本概念
  10. Blockchain区块链架构设计之四:Fabric多通道和下一代账本设计