Задать вопрос
chemtech
@chemtech
Линуксойд, DevOps

Как правильно конвертировать bash вывод в JSON с ключом {#PROCNAME}?

Я пробую получить JSON с топ-5 процессов по памяти.

Этот JSON я хочу отправить в Zabbix и нарисовать топ 5 процессов по памяти.

Я получаю топ 5 процессов по памяти командой:

ps axho comm --sort -rss | head -5
node
mongod
kubelet
dockerd
systemd-journal


Как преобразовать вывод bash в JSON с ключом {#PROCNAME} чтобы получить такую структуру:
{
  "data": [
    {
      "{#PROCNAME}": "node"
    },
    {
      "{#PROCNAME}": "mongod"
    },
    {
      "{#PROCNAME}": "kubelet"
    },
    {
      "{#PROCNAME}": "dockerd"
    },
    {
      "{#PROCNAME}": "systemd-journal"
    }
  ]
}


Используя jq или python. Есть ли у кого-нибудь идеи как примерно это сделать?
  • Вопрос задан
  • 551 просмотр
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
chemtech
@chemtech Автор вопроса
Линуксойд, DevOps
ps axho comm --sort -rss | head -5 | jq -Rn '{data: [inputs|{"{#PROCNAME}":.}]}' 
{
  "data": [
    {
      "{#PROCNAME}": "node"
    },
    {
      "{#PROCNAME}": "mongod"
    },
    {
      "{#PROCNAME}": "kubelet"
    },
    {
      "{#PROCNAME}": "dockerd"
    },
    {
      "{#PROCNAME}": "systemd-journal"
    }
  ]
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@q27off
echo -e '{\n\t"data": ['

ps axho comm --sort -rss | head -5 |
while read -r proc
do
    echo -ne '\t\t{\n\t\t\t"{#PROCNAME}":'
    echo " \"$proc\""
    echo -e '\t\t},'
done

echo -e '\t]\n}'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы