的联机帮助页systemd-cgtop说如果没有附加的 tty,它将执行一次迭代,然后将其打印出来,说这在脚本中很有用。
但是,当我尝试从脚本执行此操作时,它并不像广告中那样工作:
#!/bin/bash
line=$(systemd-cgtop|grep ezdose)
echo $line
运行脚本如下:
$ bash test.sh
(hangs with no output)
你是如何工作的?
答案1
摘自消息:
201 的变化:
systemd-cgtop 也已更新为“可通过管道传输”,以便使用其他 shell 工具进行处理。
所以,你可以systemd-cgtop | grep ...
从 开始运行v201
。
188 的变化:
cgtop 获得了一个新的 -n 开关(类似于 top),用于配置运行的最大迭代次数。它还获得了 -b,以批处理模式运行(不接受输入)。
你可以跑systemd-cgtop -n1 -b | grep ...
。但systemd-cgtop
打印Path Tasks %CPU Memory Input/s Output/s
为第一行(直到v201
)。
还:
221 的变化:
systemd-cgtop 工具学习了一个新的 --raw 开关来生成“原始”(机器可解析)输出。
使用该--raw
选项,您可以获得以字节为单位的大小:即92213248
而不是87.9M
答案2
systemd-cgtop -n1 将执行 1 次迭代
要确定您是否连接到 tty,请在脚本中添加一行: tty
#!/bin/sh
# How to check what tty you are on.
echo -ne "Connected TTY: "`tty`
line=$(systemd-cgtop -n1|grep ezdose)
echo $line
答案3
就我而言,systemd-cgtop -n1 -b | grep ...
没有返回 cpu 使用情况,因此我又添加了一次迭代,结果systemd-cgtop -n2 -b | grep ...
成功了。