Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从矩阵中打印出值_Python_Regex_Linux_Bash - Fatal编程技术网

Python 从矩阵中打印出值

Python 从矩阵中打印出值,python,regex,linux,bash,Python,Regex,Linux,Bash,我有一个任务,随着时间的推移,它会消耗arbit CPU和内存。它给我一个执行以下linux命令的输出: mpstat-u 1-p ALL 输出如下所示: 02:22:14 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 02:22:15 PM all 4.51 0.00 0.11 0.00 0.00 0.00 0.00 0.00

我有一个任务,随着时间的推移,它会消耗arbit CPU和内存。它给我一个执行以下linux命令的输出:

mpstat-u 1-p ALL

输出如下所示:

02:22:14 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
02:22:15 PM  all    4.51    0.00    0.11    0.00    0.00    0.00    0.00    0.00   95.37
02:22:15 PM    0    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   99.00
02:22:15 PM    1   **78.22**    0.00    0.99    0.00    0.00    0.00    0.00    0.00   20.79

02:22:15 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM    4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM    8    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM    9    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   10    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   11    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   12    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   15    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM   16    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   17    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   18    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   19    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM   20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   21    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   22    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   23    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
我想在bash/python/perl中每隔20秒获取第4列和第3行a[3][4]中的值,即78.22。 因此,我想要的脚本将执行mpstat命令并打印出指定列中的值,并基于这些值创建一个图形。我正在考虑在一个.dat文件中添加所需的值,然后运行一个gnuplot或and应用程序来创建图形


有什么建议吗?

您可以使用
awk
获取第三行和第四个单元格。下面的代码从
mpstat
的输出中获取此单元格,并将其与当前UNIX时间戳一起附加到统计文件中

mpstat -u 1 -P ALL | awk 'NR==4 {print systime(), $4}' >> stats.txt
要每20秒运行一次此命令,请执行以下操作:

watch -n 20 "mpstat -u 1 -P ALL | awk 'NR==4 {print systime(), \$4}' >> stats.txt"
然后用
gnuplot
绘图:

cat stats.txt | gnuplot -p -e 'set datafile separator " "; plot "-" using 1:2 with lines'

您可以使用
awk
获取第三行和第四个单元格。下面的代码从
mpstat
的输出中获取此单元格,并将其与当前UNIX时间戳一起附加到统计文件中

mpstat -u 1 -P ALL | awk 'NR==4 {print systime(), $4}' >> stats.txt
要每20秒运行一次此命令,请执行以下操作:

watch -n 20 "mpstat -u 1 -P ALL | awk 'NR==4 {print systime(), \$4}' >> stats.txt"
然后用
gnuplot
绘图:

cat stats.txt | gnuplot -p -e 'set datafile separator " "; plot "-" using 1:2 with lines'
试试下面的方法

#!/bin/bash
function _mpstat() {
    while :; do
        arr=( $(mpstat -P 1 | tail -n 1) )
        echo "${arr[3]}"
        sleep 20
    done >> file.txt
}
_mpstat &
echo "_mpstat PID: $!"
解释

  • while:;执行无限循环
  • $(mpstat-p1 | tail-n1)
    mpstat仅cpu 1
    -p1
    和tail
    -n1
    最后一行,返回值
    $()
  • arr=(…)
    命令将值返回数组
  • echo“${arr[3]}”
    echo数组索引3
  • 睡眠20
    睡眠20秒
  • >file.txt
    在while循环块内将标准输出发送到文件
  • \u mpstat&
    将函数发送到后台进程
    &
  • echo”\u mpstat PID:$!
    返回函数的PID
您可以grep该PID以显示其父项,并在需要时同时终止两者。

请尝试以下操作

#!/bin/bash
function _mpstat() {
    while :; do
        arr=( $(mpstat -P 1 | tail -n 1) )
        echo "${arr[3]}"
        sleep 20
    done >> file.txt
}
_mpstat &
echo "_mpstat PID: $!"
解释

  • while:;do
    无限循环
  • $(mpstat-p1 | tail-n1)
    mpstat仅cpu 1
    -p1
    和tail
    -n1
    最后一行,返回值
    $()
  • arr=(…)
    命令将值返回数组
  • echo“${arr[3]}”
    echo数组索引3
  • 睡眠20
    睡眠20秒
  • >file.txt
    在while循环块内将标准输出发送到文件
  • \u mpstat&
    将函数发送到后台进程
    &
  • echo”\u mpstat PID:$返回函数的PID

你可以在需要时对PID进行grep以显示它的父项并杀死它们。

这样做:mpstat-u 1-p ALL | awk'NR==4{print systime(),$4}'>>stats.txt,stats.txt最终是一个空文件。另外,我看到的是,它不会连续打印出值,而是打印一次并停止。我的目标是持续记录CPU使用情况,直到进程运行为止,因此这还不够,但对其进行一些改进将是非常棒的。您可以使用
while
循环或(我最喜欢的)
watch
重复该命令。更新了原始答案。您仍然看到一个空文件吗?(我不确定在你第二次评论之后。)在这样做时:mpstat-u 1-P ALL | awk'NR==4{print systime(),$4}'>>stats.txt,stats.txt最终是一个空文件。另外,我看到的是,它不会连续打印值,而是打印一次并停止。我的目标是持续记录CPU使用情况,直到进程运行为止,因此这还不够,但对其进行一些改进将是非常棒的。您可以使用
while
循环或(我最喜欢的)
watch
重复该命令。更新了原始答案。您仍然看到一个空文件吗?(在你第二次评论之后,我不确定。)