
$ ps -p 31690 -o %cpu,%mem
%CPU %MEM
80.3 0.0
Учитывая вышеприведенный результат, я хотел бы получить CSV-файл, например такой:
ааа,80.3,0.0
при использовании в скрипте оболочки, например, так:
for i in { 1..31 }
do
aaa=$i
// call ps and write result to a csv
done
решение1
#!/bin/bash
for aaa in {1..31} ;do
echo $aaa$(ps --no-headers -p "$aaa" -o %cpu,%mem | tr -s ' ' ',') #>>/tmp/output.csv
done
решение2
Одно из возможных решений — я считаю, что это немного более элегантно (и, что важно, я протестировал его (недолго), чтобы убедиться, что оно действительно работает).
#! /bin/bash
# This allows you to specify the PID you are interested in at the command prompt, as I expect hard coding is not a good idea.
if [ "$1." == "." ]
then
echo Usage: $0 pid
exit 1
fi
for each in {1..31}
do
echo ${each}$(ps -p $1 --noheaders -o %cpu,%mem| tr -s ' ' ',') >> /tmp/file.name
done