我想使用 以批处理/非交互模式运行 top -b
。但是我希望输出按 PID 排序。哪个命令行选项可以做到这一点?我使用的是 Debian Lenny 和-o pid
此处的选项 (http://www.unixtop.org/man.shtml)不起作用。
答案1
~/.toprc
对我来说,在没有或/etc/toprc
运行3.2.8的 Ubuntu 系统上top
,主要排序是%CPU
,次要排序是PID
。
设置批处理模式的top
排序依据:PID
如果你还没有~/.toprc
:
top
以交互模式启动。- 按。这将使用当前设置
W
写入新文件。~/.toprc
- 退出
top
(按q
)。
要创建必要的配置文件:
- 备份您的文件
~/.toprc
。您将在后续步骤中需要它。我们将其命名为~/.toprc.ORIG
(如果您愿意,可以选择其他名称)。 top
以交互模式启动。- 按
F
,然后a
,然后按 Enter。这将选择PID
为排序字段。 - 按
R
。这将反转排序,使其按升序排列。 - 按。这将使用当前设置
W
写入新文件。~/.toprc
- 退出
top
(按q
)。 mv ~/.toprc ~/toprc.PIDSORT
(或选择你喜欢的名字)- 将备份复制回原始文件(
cp ~/.toprc.ORIG ~/.toprc
)。
要使用您创建的文件来输出top -b -n1
按排序的内容PID
,请创建如下脚本:
#!/bin/bash
cp "$HOME/.toprc.PIDSORT" "$HOME/.toprc"
top -b -n1 > /path/to/outputfile
cp "$HOME/.toprc.ORIG" "$HOME/.toprc"
答案2
您可以尝试通过排序运行输出,例如
top -b -n1 | sort -b -n
这会按数字对默认输出进行排序,因此按 PID 排序。但它确实会打乱标题行的顺序。