如何以csv格式存储ps命令输出?

时间:2019-02-24 20:26:35

标签: linux shell

我正在制作一个过程监控应用程序。现在我需要的是

  1. 获取所有正在运行的进程的与进程相关的数据(pid,进程名称,cpu使用率,内存使用率和虚拟内存使用率)。

  2. 完成第一步后,我想将检索到的数据存储为 csv 格式。

我的代码部分是:

ps -e -o pid,lstart,%cpu,%mem,cmd >> output.csv

但是它将所有值存储在一个单元格中。表示它没有被逗号分隔。

output.csv 示例:

  PID                  STARTED %CPU %MEM CMD
    1 Mon Feb 25 00:00:01 2019  0.0  0.1 examplecommand1
    2 Mon Feb 25 00:00:01 2019  0.0  0.0 examplecommand2
                          (...)

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以尝试以下类似我编写的代码:

ps -e -o %p, -o lstart -o ,%C, -o %mem -o ,%c > output.csv

简要说明:

-o命令可以在ps命令中多次使用以指定格式。 为了控制使用哪个分隔符,我们可以使用 AIX格式描述符。我们可以指定所需的分隔符,例如%p,。由于 AIX格式描述符并非适用于每条数据,而是仅适用于某些数据(例如,在我们的案例中,{{1没有针对 AIX格式的描述符 }},对于%mem),我们在可用的 AIX格式描述符周围植入lstart%mem,以实现逗号分隔。例如,this site提供有关lstart命令的信息以供进一步阅读。

output.csv 示例:

ps

答案 1 :(得分:0)

csv-ps -c pid,cmd,%cpu,vm_rss_KiB,vm_size_KiB

csv-ps来自https://github.com/mslusarz/csv-nix-tools