Conawk
:
awk -F'[:=]' '{ cmd="host "$2"| cut -d\" \" -f4"; cmd |getline $2;
print $1"="$2":"$3; close(cmd) }' infile
Establecemos un comando de shell host $2"| cut -d\" \" -f4
en una variable llamada cmd
. Luego, con cmd |getline $2
la ejecución awk
del comando guarda el resultado en el valor del segundo campo a partir del resultado de cmd
lo abrimos Usando getline de un Pipe , luego imprimimos las columnas, luego necesitamos cerrar el comando que abrimos, y usamosclose(cmd)
aquí.
O reemplazar host
con dig +short
hará que el comando sea corto:
awk -F'[:=]' '{ cmd="dig +short "$2; cmd |getline $2;
print $1"="$2":"$3; close(cmd) }' infile
Я попытаюсь ответить на свои вопросы, используя полученные знания
What am I getting wrong here?
Основная ошибка заключается в предположении, что использование памяти процессом отражается в столбце RES
. На самом деле это отражено в столбце USED
(= RES + SWAP)
, а top
не показывает столбец USED
в конфигурации по умолчанию (Мне любопытно, почему)-введите клавишу f
для настройки необходимых видимых столбцов, порядка и Порядок сортировки.
Еще одна серьезная ошибка — оценка использования памяти java-процессом-actual=~960MB
по сравнению с expected=~650MB
. Это означает, что все физическое адресное пространство размером 1 ГБ может быть использовано только этим процессом Java.
Why "Mem Used + Swap Used" is twice higher than "Sum of RES"?
Потому что, как я теперь вижу из top
, некоторые процессы занимают больше места в SWAP
, чем в RES
, и в моем конкретном случае это приводит к ~распределению 50/50 общего использования памяти между RES
иSWAP
Why there is so high Swap usage with swappiness=0?
Поскольку фактическое использование памяти действительно велико, и процессы не могут поместиться в физическую память.