我有一个基于 top 的 linux 命令,它输出我当前的任务快照(我已经从各种 SE 主题中组装了它,所以它可能不是最佳的,但它对我有用):
top -bn 1 -i | grep "^ " | awk '{ printf("%s%s%s\n","
{CPU:"$9",","MEM:"$10",","CMD:"$12"}"); }' | tail -n +2 | gawk '{
print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }'
输出是这样的:
[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
但这会删除所有“空闲”任务,这意味着“CPU:0.0” - 但是,这样,我会丢失所有任务,例如:CPU:0.0,MEM:0.2(我想保留)
也许在命令的 awk 部分中以某种方式添加 if-then-else ?我试图破解它,但它不起作用。