以下命令可用于捕获当前占用 CPU 最多的进程并将其存储到文件中:
top -c -b -n 1 > top.log
Run Code Online (Sandbox Code Playgroud)
该-c标志特别有用,因为它为您提供每个进程的命令行参数,而不仅仅是进程名称。
没有-c:
2497 root 18 0 11264 5888 1524 S 0.0 0.1 0:03.31 miniserv.pl
Run Code Online (Sandbox Code Playgroud)
使用-c(附加有用的命令信息):
2497 root 18 0 11264 5888 1524 S 0.0 0.1 0:03.31 /usr/bin/perl /usr/libexec/webmin/miniserv.pl /etc/webmin/miniserv.conf
Run Code Online (Sandbox Code Playgroud)
问题是每一行输出都会被截断以适合当前的终端窗口。如果您可以拥有一个宽终端,那么这是可以的,因为您有很多输出,但如果您的终端只有 165 个字符宽,则每个进程只能获得 165 个字符的信息,并且通常没有足够的字符来显示完整的进程命令。当命令在没有终端的情况下执行时(例如通过 cron 作业执行),这是一个特殊问题。
有谁知道如何停止top截断数据或强制top每行显示一定数量的字符?
这并不紧急,因为还有另一种方法可以获取按 CPU 使用率排序的前 10 个进程:
ps -eo pcpu,pmem,user,args | sort -r -k1 | head -n 10
Run Code Online (Sandbox Code Playgroud) 我正在运行一个 MongoDB 数据库。没有分片。当我运行 htop 时,我看到了很多 mongod 实例。这是正常的吗?每个连接都会创建一个单独的 mongod 进程吗?我应该担心吗?
出于某种原因,当我使用 top 时,只显示其中之一。这部分也令人困惑。
正如评论中所问,“ps axjf | grep mongod”的输出:
12858 12878 12877 12858 pts/0 12877 S+ 500 0:00 \_ grep mongod
1 2691 2690 2690 ? -1 Sl 497 70:54 /usr/bin/mongod -f /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud) 我遇到了很多用例,其中从(通常是换行符分隔的)流中获取输入并以类似 top 的方式对其进行总结非常有用(参见 top、iotop 等)。一种即时数据透视表。
例如采用对数式输入:
I heard A from unit 1 and it said "Great!" 56
I heard A from unit 2 and it said "Oh no!" 42
I heard C from unit 1 and it said "Waiting for input." 33
I heard B from unit 3 and it said "Stopped." -1
...
Run Code Online (Sandbox Code Playgroud)
由此,我们可以运行一个带有正则表达式和组指标的工具:
topify [lineout] [regex] [name #1] [group #1] [name #2] [group #2] [All other columns name position]
where:
lineout is the number of lines before removing …Run Code Online (Sandbox Code Playgroud) 最近有一台运行 CentOS 6.7 的专用服务器,我们运行了更新并注意到 top 仅显示当前用户的进程。
[myuser@server2 ~]$ top -b -n1
top - 20:19:20 up 1 day, 10:09, 3 users, load average: 0.80, 0.50, 0.41
Tasks: 11 total, 1 running, 10 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.0%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32880988k total, 26893324k used, 5987664k free, 140872k buffers
Swap: 1046520k total, 0k used, 1046520k free, 19532120k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1648 myuser 20 0 98.8m …Run Code Online (Sandbox Code Playgroud) 有没有办法让 htop 中的进程列表只显示为命令的名称,而不是带有标志的完整路径名?
我只是运行了top命令来观察下面的过程
chown -r me:me allMyMusic
Run Code Online (Sandbox Code Playgroud)
它已经运行了大约 5 分钟,但是 top 命令中的 TIME+ 列报告它运行了大约0:12.10几秒钟。它也在缓慢增加。
有没有人遇到过 top 命令的 TIME+ 列错误地报告经过的时间?
我想知道如何监控哪个进程占用了我所有的 IO 带宽。我知道的唯一命令是 gstat 但它显示累积信息。是否有任何工具可以用来检查正在运行的进程的 io 使用情况?系统为FreeBSD 8.3
谢谢
看看下面“top -u steve”的统计数据,top有什么问题吗?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3490 steve 20 0 10444 312 248 R 114 0.0 23:33.22 test2
25479 steve 20 0 867m 239m 19m S 38 12.1 411:00.43 chromium-browse
1470 steve 20 0 455m 42m 13m S 11 2.1 283:38.59 compiz
25207 steve 20 0 529m 101m 29m S 7 5.1 29:39.81 chromium-browse
2890 steve 20 0 230m 47m 25m S 4 2.4 2:09.85 codeblocks
Run Code Online (Sandbox Code Playgroud) 我有一个进程在 Linux 上的 Docker 容器中运行,内存限制为 2GByte。(容器以 开头docker run --memory=2g。)
以下是top它运行一段时间后的情况。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9016 root 20 0 7342132 4.652g 4.224g S 100.0 7.4 18828:28 blah
Run Code Online (Sandbox Code Playgroud)
这是输出docker stats:
CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O
d7032e5928b6 100.02% 2.076 GB/2.147 GB 96.68% 345 MB/199.1 MB
Run Code Online (Sandbox Code Playgroud)
然后,重新启动后top:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5653 root 20 0 2787800 …Run Code Online (Sandbox Code Playgroud)