可能已经知道 top 命令的绝大部分操作,除了很少的几个操作,如果我没错的话,批处理模式就是其中之一。
-- Magesh Maruthamuthu(作者)

top 命令 是每个人都在使用的用于 监控 Linux 系统性能 的最好的命令。你可能已经知道 top 命令的绝大部分操作,除了很少的几个操作,如果我没错的话,批处理模式就是其中之一。

大部分的脚本编写者和开发人员都知道这个,因为这个操作主要就是用来编写脚本。

如果你不了解这个,不用担心,我们将在这里介绍它。

什么是 top 命令的批处理模式

批处理模式允许你将 top 命令的输出发送至其他程序或者文件中。

在这个模式中,top 命令将不会接收输入并且持续运行,直到迭代次数达到你用 -n 选项指定的次数为止。

如果你想解决 Linux 服务器上的任何性能问题,你需要正确的 理解 top 命令的输出。

1) 如何在批处理模式下运行 top 命令

默认地,top 命令按照 CPU 的使用率来排序输出结果,所以当你在批处理模式中运行以下命令时,它会执行同样的操作并打印前 35 行:

# top -bc | head -35top - 06:41:14 up 8 days, 20:24,  1 user,  load average: 0.87, 0.77, 0.81
Tasks: 139 total,   1 running, 136 sleeping,   0 stopped,   2 zombie
%Cpu(s):  0.0 us,  3.2 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1595932 free,   886736 used,  1398272 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2648472 avail MemPID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND1 root      20   0  191144   2800   1596 S   0.0  0.1   5:43.63 /usr/lib/systemd/systemd --switched-root --system --deserialize 222 root      20   0       0      0      0 S   0.0  0.0   0:00.32 [kthreadd]3 root      20   0       0      0      0 S   0.0  0.0   0:28.10 [ksoftirqd/0]5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]7 root      rt   0       0      0      0 S   0.0  0.0   0:33.96 [migration/0]8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]9 root      20   0       0      0      0 S   0.0  0.0  63:05.12 [rcu_sched]10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [lru-add-drain]11 root      rt   0       0      0      0 S   0.0  0.0   0:08.79 [watchdog/0]12 root      rt   0       0      0      0 S   0.0  0.0   0:08.82 [watchdog/1]13 root      rt   0       0      0      0 S   0.0  0.0   0:44.27 [migration/1]14 root      20   0       0      0      0 S   0.0  0.0   1:22.45 [ksoftirqd/1]16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/1:0H]18 root      20   0       0      0      0 S   0.0  0.0   0:00.01 [kdevtmpfs]19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [netns]20 root      20   0       0      0      0 S   0.0  0.0   0:01.35 [khungtaskd]21 root       0 -20       0      0      0 S   0.0  0.0   0:00.02 [writeback]22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kintegrityd]23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [bioset]24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kblockd]25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [md]26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [edac-poller]33 root      20   0       0      0      0 S   0.0  0.0   1:19.07 [kswapd0]34 root      25   5       0      0      0 S   0.0  0.0   0:00.00 [ksmd]35 root      39  19       0      0      0 S   0.0  0.0   0:12.80 [khugepaged]36 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [crypto]44 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kthrotld]46 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kmpath_rdacd]

2) 如何在批处理模式下运行 top 命令并按内存使用率排序结果

在批处理模式中运行以下命令按内存使用率对结果进行排序:

# top -bc -o +%MEM | head -n 20top - 06:42:00 up 8 days, 20:25,  1 user,  load average: 0.66, 0.74, 0.80
Tasks: 146 total,   1 running, 145 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1422044 free,  1059176 used,  1399720 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2475984 avail MemPID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND18105 mysql     20   0 1453900 156096   8816 S   0.0  4.0   2:12.98 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid1841 root      20   0  228980 107036   5360 S   0.0  2.8   0:05.56 /usr/local/cpanel/3rdparty/perl/528/bin/perl -T -w /usr/local/cpanel/3rdparty/bin/spamd --max-children=3 --max-spare=1 --allowed-ips=127.0.0.+4301 root      20   0  230208 104608   1816 S   0.0  2.7   0:03.77 spamd child8139 nobody    20   0  257000  27108   3408 S   0.0  0.7   0:00.04 /usr/sbin/httpd -k start7961 nobody    20   0  256988  26912   3160 S   0.0  0.7   0:00.05 /usr/sbin/httpd -k start8190 nobody    20   0  256976  26812   3140 S   0.0  0.7   0:00.05 /usr/sbin/httpd -k start8353 nobody    20   0  256976  26812   3144 S   0.0  0.7   0:00.04 /usr/sbin/httpd -k start8629 nobody    20   0  256856  26736   3108 S   0.0  0.7   0:00.02 /usr/sbin/httpd -k start8636 nobody    20   0  256856  26712   3100 S   0.0  0.7   0:00.03 /usr/sbin/httpd -k start8611 nobody    20   0  256844  25764   2228 S   0.0  0.7   0:00.01 /usr/sbin/httpd -k start8451 nobody    20   0  256844  25760   2220 S   0.0  0.7   0:00.04 /usr/sbin/httpd -k start8610 nobody    20   0  256844  25748   2224 S   0.0  0.7   0:00.01 /usr/sbin/httpd -k start8632 nobody    20   0  256844  25744   2216 S   0.0  0.7   0:00.03 /usr/sbin/httpd -k start

上面命令的详细信息:

  • -b:批处理模式选项
  • -c:打印运行中的进程的绝对路径
  • -o:指定进行排序的字段
  • head:输出文件的第一部分
  • -n:打印前 n 行

3) 如何在批处理模式下运行 top 命令并按照指定的用户进程对结果进行排序

如果你想要按照指定用户进程对结果进行排序请运行以下命令:

# top -bc -u mysql | head -n 10top - 06:44:58 up 8 days, 20:27,  1 user,  load average: 0.99, 0.87, 0.84
Tasks: 140 total,   1 running, 137 sleeping,   0 stopped,   2 zombie
%Cpu(s): 13.3 us,  3.3 sy,  0.0 ni, 83.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1589832 free,   885648 used,  1405460 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2649412 avail MemPID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND18105 mysql     20   0 1453900 156888   8816 S   0.0  4.0   2:16.42 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

4) 如何在批处理模式下运行 top 命令并按照处理时间进行排序

在批处理模式中使用以下 top 命令按照处理时间对结果进行排序。这展示了任务从启动以来已使用的总 CPU 时间。

但是如果你想要检查一个进程在 Linux 上运行了多长时间请看接下来的文章:

  • 检查 Linux 中进程运行时间的五种方法
# top -bc -o TIME+ | head -n 20top - 06:45:56 up 8 days, 20:28,  1 user,  load average: 0.56, 0.77, 0.81
Tasks: 148 total,   1 running, 146 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.0 us,  3.1 sy,  0.0 ni, 96.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1378664 free,  1094876 used,  1407400 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2440332 avail MemPID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND9 root      20   0       0      0      0 S   0.0  0.0  63:05.70 [rcu_sched]272 root      20   0       0      0      0 S   0.0  0.0  16:12.13 [xfsaild/vda1]3882 root      20   0  229832   6212   1220 S   0.0  0.2   9:00.84 /usr/sbin/httpd -k start1 root      20   0  191144   2800   1596 S   0.0  0.1   5:43.75 /usr/lib/systemd/systemd --switched-root --system --deserialize 223761 root      20   0   68784   9820   2048 S   0.0  0.3   5:09.67 tailwatchd3529 root      20   0  404380   3472   2604 S   0.0  0.1   3:24.98 /usr/sbin/rsyslogd -n3520 root      20   0  574208    572    164 S   0.0  0.0   3:07.74 /usr/bin/python2 -Es /usr/sbin/tuned -l -P444 dbus      20   0   58444   1144    612 S   0.0  0.0   2:23.90 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation18105 mysql     20   0 1453900 157152   8816 S   0.0  4.0   2:17.29 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid249 root       0 -20       0      0      0 S   0.0  0.0   1:28.83 [kworker/0:1H]14 root      20   0       0      0      0 S   0.0  0.0   1:22.46 [ksoftirqd/1]33 root      20   0       0      0      0 S   0.0  0.0   1:19.07 [kswapd0]342 root      20   0   39472   2940   2752 S   0.0  0.1   1:18.17 /usr/lib/systemd/systemd-journald

5) 如何在批处理模式下运行 top 命令并将结果保存到文件中

如果出于解决问题的目的,你想要和别人分享 top 命令的输出,请使用以下命令重定向输出到文件中:

# top -bc | head -35 > top-report.txt# cat top-report.txttop - 06:47:11 up 8 days, 20:30,  1 user,  load average: 0.67, 0.77, 0.81
Tasks: 133 total,   4 running, 129 sleeping,   0 stopped,   0 zombie
%Cpu(s): 59.4 us, 12.5 sy,  0.0 ni, 28.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1596268 free,   843284 used,  1441388 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2659084 avail MemPID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND9686 daygeekc  20   0  406132  62184  43448 R  94.1  1.6   0:00.34 /opt/cpanel/ea-php56/root/usr/bin/php-cgi9689 nobody    20   0  256588  24428   1184 S   5.9  0.6   0:00.01 /usr/sbin/httpd -k start1 root      20   0  191144   2800   1596 S   0.0  0.1   5:43.79 /usr/lib/systemd/systemd --switched-root --system --deserialize 222 root      20   0       0      0      0 S   0.0  0.0   0:00.32 [kthreadd]3 root      20   0       0      0      0 S   0.0  0.0   0:28.11 [ksoftirqd/0]5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]7 root      rt   0       0      0      0 S   0.0  0.0   0:33.96 [migration/0]8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]9 root      20   0       0      0      0 R   0.0  0.0  63:05.82 [rcu_sched]10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [lru-add-drain]11 root      rt   0       0      0      0 S   0.0  0.0   0:08.79 [watchdog/0]12 root      rt   0       0      0      0 S   0.0  0.0   0:08.82 [watchdog/1]13 root      rt   0       0      0      0 S   0.0  0.0   0:44.28 [migration/1]14 root      20   0       0      0      0 S   0.0  0.0   1:22.46 [ksoftirqd/1]16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/1:0H]18 root      20   0       0      0      0 S   0.0  0.0   0:00.01 [kdevtmpfs]19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [netns]20 root      20   0       0      0      0 S   0.0  0.0   0:01.35 [khungtaskd]21 root       0 -20       0      0      0 S   0.0  0.0   0:00.02 [writeback]22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kintegrityd]23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [bioset]24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kblockd]25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [md]26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [edac-poller]33 root      20   0       0      0      0 S   0.0  0.0   1:19.07 [kswapd0]34 root      25   5       0      0      0 S   0.0  0.0   0:00.00 [ksmd]35 root      39  19       0      0      0 S   0.0  0.0   0:12.80 [khugepaged]36 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [crypto]

如何按照指定字段对结果进行排序

top 命令的最新版本中, 按下 f 键进入字段管理界面。

要使用新字段进行排序, 请使用 up/down 箭头选择正确的选项,然后再按下 s 键进行排序。最后按 q 键退出此窗口。

Fields Management for window 1:Def, whose current sort field is %CPUNavigate with Up/Dn, Right selects for move then  or Left commits,'d' or  toggles display, 's' sets sort.  Use 'q' or  to end!PID     = Process Id             nsUTS   = UTS namespace InodeUSER    = Effective User Name    LXC     = LXC container namePR      = Priority               RSan    = RES Anonymous (KiB)NI      = Nice Value             RSfd    = RES File-based (KiB)VIRT    = Virtual Image (KiB)    RSlk    = RES Locked (KiB)RES     = Resident Size (KiB)    RSsh    = RES Shared (KiB)SHR     = Shared Memory (KiB)    CGNAME  = Control Group nameS       = Process Status         NU      = Last Used NUMA node%CPU    = CPU Usage%MEM    = Memory Usage (RES)TIME+   = CPU Time, hundredthsCOMMAND = Command Name/LinePPID    = Parent Process pidUID     = Effective User IdRUID    = Real User IdRUSER   = Real User NameSUID    = Saved User IdSUSER   = Saved User NameGID     = Group IdGROUP   = Group NamePGRP    = Process Group IdTTY     = Controlling TtyTPGID   = Tty Process Grp IdSID     = Session IdnTH     = Number of ThreadsP       = Last Used Cpu (SMP)TIME    = CPU TimeSWAP    = Swapped Size (KiB)CODE    = Code Size (KiB)DATA    = Data+Stack (KiB)nMaj    = Major Page FaultsnMin    = Minor Page FaultsnDRT    = Dirty Pages CountWCHAN   = Sleeping in FunctionFlags   = Task FlagsCGROUPS = Control GroupsSUPGIDS = Supp Groups IDsSUPGRPS = Supp Groups NamesTGID    = Thread Group IdOOMa    = OOMEM AdjustmentOOMs    = OOMEM Score currentENVIRON = Environment varsvMj     = Major Faults deltavMn     = Minor Faults deltaUSED    = Res+Swap Size (KiB)nsIPC   = IPC namespace InodensMNT   = MNT namespace InodensNET   = NET namespace InodensPID   = PID namespace InodensUSER  = USER namespace Inode

top 命令的旧版本,请按 shift+fshift+o 键进入字段管理界面进行排序。

要使用新字段进行排序,请选择相应的排序字段字母, 然后按下回车键排序。

Current Sort Field:  N  for window 1:DefSelect sort field via field letter, type any other key to returna: PID        = Process Idb: PPID       = Parent Process Pidc: RUSER      = Real user named: UID        = User Ide: USER       = User Namef: GROUP      = Group Nameg: TTY        = Controlling Ttyh: PR         = Priorityi: NI         = Nice valuej: P          = Last used cpu (SMP)k: %CPU       = CPU usagel: TIME       = CPU Timem: TIME+      = CPU Time, hundredths
* N: %MEM       = Memory usage (RES)o: VIRT       = Virtual Image (kb)p: SWAP       = Swapped size (kb)q: RES        = Resident size (kb)r: CODE       = Code size (kb)s: DATA       = Data+Stack size (kb)t: SHR        = Shared Mem size (kb)u: nFLT       = Page Fault countv: nDRT       = Dirty Pages countw: S          = Process Statusx: COMMAND    = Command name/liney: WCHAN      = Sleeping in Functionz: Flags      = Task FlagsNote1:If a selected sort field can't beshown due to screen width or yourfield order, the '<' and '>' keyswill be unavailable until a fieldwithin viewable range is chosen.Note2:Field sorting uses internal values,not those in column display.  Thus,the TTY & WCHAN fields will violatestrict ASCII collating sequence.(shame on you if WCHAN is chosen)


下运行maven命令_如何在批处理模式下运行 top 命令相关推荐

  1. php 如何执行top命令,技术|如何在批处理模式下运行 top 命令

    top 命令 是每个人都在使用的用于 监控 Linux 系统性能 的最好的命令.你可能已经知道 top 命令的绝大部分操作,除了很少的几个操作,如果我没错的话,批处理模式就是其中之一. 大部分的脚本编 ...

  2. bat fc命令_什么是批处理?Windows批处理(cmd/bat)常用命令合集

    什么是批处理?批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中.批处理文件的扩展名为bat .目 ...

  3. linux下调试thread 类_在 RISC-V 芯片 GD32V 上运行 RT-Thread

    在 RISC-V 芯片 GD32V 上运行 RT-Thread GD32VF103 开发板 去年九月份的时候 RT-Thread 的 Andy Chen 组织定做了一块 GD32V 开发板,托 And ...

  4. linux 开机自动运行命令_如何在Linux终端同时运行多个Linux命令

    在一行中运行两个或多个命令可以节省大量时间,并在Linux中提高效率.在Linux中,有三种方法可以在一行中运行多个命令: ; Command 1 ; Command 2 首先运行Command1,然 ...

  5. centos7python命令_详解Linux Centos7下安装Python的方法

    1.查看是否已经安装Python Centos7默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5. 使用python -V命令查看一下是否安装Pytho ...

  6. 关闭windows hello然后尝试再次运行安装程序_蜂鸟E203系列——Windows下运行hello world例程...

    蜂鸟E203系列--Windows下运行hello world例程​mp.weixin.qq.com 创建 hello world 例程 选择file->new->C / C++ Proj ...

  7. java性能调试命令_性能测试必备监控技能jvm之jdk命令行工具篇16

    3.png 前言 对于JVM的性能监控,主要注意以下关键参数,通过jdk自带的命令行工具,即可查看相关参数,从而分析系统或目标服务程序中存在的性能瓶颈 jps JVM Process Status T ...

  8. linux vim命令_提升生产力的20大Linux Vim命令

    linux vim命令 VIM or the Vi Improved text editor is one of the most advanced text editors available. L ...

  9. xvfb运行java脚本_使用xvfb-run(Selenium WebDriver)发行运行Firefox的问题 - java

    我有一个Java应用程序,该应用程序使用Selenium Webdriver登录到站点,检查特定文本,如果找到特定文本,请给我发送电子邮件.我有一项cron作业,该作业每天早晨运行jar文件,并每晚将 ...

最新文章

  1. PyTorch中nn.Module类简介
  2. 升级mysql服务器二进制备份_MySQL二进制日志备份和恢复详解
  3. maven 报错解决
  4. Java 洛谷 提交完题目的代码之后一直停留在 ( 正在等待编译……),刷新页面之后 ,显示 Unaccepted 0分
  5. 7000p壁纸怎么换_这些圣诞壁纸,劝你们马上点开,保存!真的超好看
  6. 如何实现SAP UI5 Web Component React控件的加载效果
  7. NET Core微服务之路:再谈分布式系统中一致性问题分析
  8. 技术人生第5篇——浅谈如何成为技术一号位?
  9. 优秀的模糊测试代码是如何炼成的?
  10. 一个完整的嵌入式程序_嵌入式入门-从STM32CudeMX、FreeRtos、Proteu仿真开始
  11. php+ci+db+debug,[PHP] Web Framework : CodeIgniter MySQL Database 使用教學
  12. 深度学习和机器学习的相关资料
  13. 最全人工智能专业术语表(中英文对照)
  14. 算法-狄克斯特拉算法
  15. Springboot毕设项目地方特色美食小吃分享平台6iqqq(java+VUE+Mybatis+Maven+Mysql)
  16. 边缘计算初探:什么是边缘计算,它能做什么?
  17. Lambda表达式超详细总结
  18. 2022年最新江西建筑八大员(标准员)考试试题及答案
  19. 讲述:一个月薪12000的北京程序员的真实生活
  20. 阿联酋航空与中国南方航空签订代码共享协议

热门文章

  1. 【C语言】(指针) 将两个数排序
  2. 红黑树 平衡二叉搜索树_红黑树:自我平衡的二叉搜索树,并举例说明
  3. web全栈架构师所需技术栈_统一架构–一种构建全栈应用程序的简单方法
  4. 自助银行服务系统项目开发_自助服务时代即将结束
  5. 怎么钢枪_和平精英有战术钢枪和无脑冲有何区别?你们怎么看待这个问题
  6. Mac OS下使用VS Code对C++程序进行debug的配置
  7. Python爬虫开发:反爬虫措施以及爬虫编写注意事项
  8. 手把手教你进行pip换源,让你的Python库下载嗖嗖的
  9. HttpReqeust对象
  10. Maven实战 | dependencies与dependencyManagement