如何在顶部隐藏 "idle"(CPU 和 RAM)进程?
How to hide "idle" (both CPU and RAM) processes in top?
我有一个基于 top 的 linux 命令,它输出我当前的任务快照(我从各种 SE 主题中收集了它,所以它可能不是最佳的,但它对我有用):
top -bn 1 -i | grep "^ " | awk '{ printf("%s%s%s\n","
{CPU:"",","MEM:"",","CMD:""}"); }' | tail -n +2 | gawk '{
print strftime("[%Y-%m-%d %H:%M:%S]"), [=12=] }'
输出是这样的:
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.2,CMD:uwsgi}
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:uwsgi}
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:nginx}
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:nginx}
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:nginx}
实际上,我每次执行命令都会得到 300 行。
我想删除具有 "CPU:0.0,MEM:0.0".
的行
我已经尝试过:top -i
但这会删除所有 "idle" 任务,这意味着 "CPU:0.0" - 但是,那样的话,我将失去所有任务,例如:CPU:0.0,MEM:0.2(我想保留)
也许在命令的 awk 部分以某种方式添加一个 if-then-else?我试图破解它,但它不起作用。
grep 会做:
... | grep -v "CPU:0.0,MEM:0.0"
来自手册页:
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
我有一个基于 top 的 linux 命令,它输出我当前的任务快照(我从各种 SE 主题中收集了它,所以它可能不是最佳的,但它对我有用):
top -bn 1 -i | grep "^ " | awk '{ printf("%s%s%s\n","
{CPU:"",","MEM:"",","CMD:""}"); }' | tail -n +2 | gawk '{
print strftime("[%Y-%m-%d %H:%M:%S]"), [=12=] }'
输出是这样的:
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.2,CMD:uwsgi}
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:uwsgi}
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:nginx}
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:nginx}
[2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:nginx}
实际上,我每次执行命令都会得到 300 行。 我想删除具有 "CPU:0.0,MEM:0.0".
的行我已经尝试过:top -i
但这会删除所有 "idle" 任务,这意味着 "CPU:0.0" - 但是,那样的话,我将失去所有任务,例如:CPU:0.0,MEM:0.2(我想保留)
也许在命令的 awk 部分以某种方式添加一个 if-then-else?我试图破解它,但它不起作用。
grep 会做:
... | grep -v "CPU:0.0,MEM:0.0"
来自手册页:
-v, --invert-match Invert the sense of matching, to select non-matching lines.