如何使用 systemd-cgtop 编写脚本?

如何使用 systemd-cgtop 编写脚本?

的联机帮助页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 ...成功了。

相关内容