Поле owner_pid
в procfs
файл status
из шоу устройства PCM, какая программа открыла его:
$ grep owner_pid /proc/asound/card*/pcm*/sub*/status
/proc/asound/card2/pcm0p/sub0/status:owner_pid : 1803
$ ps -p 1803
PID TTY TIME CMD
1803 pts/0 00:00:00 aplay
Хорошо, этот выход - JSON. Итак, разобрать как JSON:
#!/usr/bin/perl;
use strict;
use warnings;
use JSON;
local $/;
print to_json ( decode_json ( <> ), {pretty => 1 });
Будет распечатана Ваша вещь как:
{
"something" : [
{
"host" : "something.internal",
"scheme" : "solr",
"ip" : "123.4.567.89",
"path" : "something",
"port" : 8080
}
],
"second_database" : [
{
"path" : "main",
"ip" : "123.4.567.89",
"query" : {
"is_master" : true
},
"host" : "second_database.internal",
"port" : 3306,
"password" : "",
"scheme" : "mysql",
"username" : "user"
}
],
"redis" : [
{
"scheme" : "redis",
"ip" : "123.4.567.89",
"port" : 6379,
"host" : "redis"
}
],
"database" : [
{
"username" : "user",
"password" : "",
"scheme" : "mysql",
"port" : 3306,
"host" : "database.internal",
"ip" : "123.4.567.89",
"query" : {
"is_master" : true
},
"path" : "main"
}
]
}
Отформатирована, а для бонусных очков - все еще JSON.
Попробуйте echo $ ENV_VAR | base64 --decode | json_reformat
. Если это версия Centos 6.x или выше, она у вас должна быть
Я бы вбил это в ямл
(который является частью ruamel.yaml, автором которого я являюсь):
echo $ENV_VAR | base64 --decode | yaml from-json -
даст вам это (на основе вывода вашего примера):
second_database:
- username: user
password: ''
ip: 123.4.567.89
host: second_database.internal
path: main
query:
is_master: true
scheme: mysql
port: 3306
redis:
- ip: 123.4.567.89
host: redis
scheme: redis
port: 6379
something:
- path: something
host: something.internal
scheme: solr
port: 8080
ip: 123.4.567.89
database:
- username: user
password: ''
ip: 123.4.567.89
host: database.internal
path: main
query:
is_master: true
scheme: mysql
port: 3306
Заказ ключей не гарантируется, потому что это не гарантируется в json, и у меня нет ruamel. json
пакет типа ruamel.yaml
, который сохраняет порядок при чтении в json
.
Вышеуказанное работает по принципу, что YAML является суперсетью JSON, но имеет более читабельные режимы отображения (пропускает котировки, когда в них нет абсолютной необходимости, делая структуру блоков с отступом).
Следующий пакет npmjs выполняет эту задачу:https://www.npmjs.com/package/js-beautify
Вы можете установить его с помощью
npm -g install js-beautify
во всем мире, хотя перезапись пакетов debian является плохой практикой. Лучше, если вы создадите свой собственный глобальный или локальный набор пакетов и будете использовать инструмент из него.
Для этого вам понадобится nodejs.