Напрямую сjq
:
jq '{ starts: [ { attributeList: (.starts[].attributeList
| map(select(.name == "Command"))) }] }' file.json
Выход:
{
"starts": [
{
"attributeList": [
{
"name": "Command",
"value": "bash"
}
]
}
]
}
Потому что отбрасывание кэшей никогда не приносит никакой пользы. Забывание вещей не там, где выигрыш. Выигрыш в повторном использовании памяти, это произойдет в любом случае. Так как некоторые точечные данные будут вытеснены из памяти.
Однако выполнение этих больших заданий может привести к снижению производительности, :если данные кэшируются, но никогда -не используются повторно, это приводит к вытеснению других данных без какой-либо пользы.
Поэтому вам нужно запустить задание без кэширования (к сожалению, я не помню команду для этого ).
Why doesn't Linux automatically clear caches?
Будет.
ron> free -g
total used free shared buffers cached
Mem: 504 415 88 1 0 352
-/+ buffers/cache: 62 441
Swap: 0 0 0
Кэшированная память по-прежнему считается свободной памятью.
Когда количество свободных ресурсов уменьшится до 0, они будут извлечены из кэша.
Could this harm the system in any way, or cause any negative effects?
вред = нет. Исследуйте echo 3 > /proc/sys/vm/drop_caches
, и вы увидите, что это не -неразрушающая операция.
Негативным эффектом было бы снижение производительности из-за необходимости считывать с диска что-то, что находилось бы в кэше. Например, напишите программу на C, которая читает файл данных размером 10 ГБ. При первом запуске он будет медленным, потому что он читает с диска, но в любое время после этого будет намного быстрее, потому что этот файл данных кэшируется в оперативной памяти. Удалите кеш, и следующий запуск программы чтения файла данных будет медленным, как и в первый раз. Это легко наблюдать и повторять.
If the answer is no then why does not Linux run this command automatically by default?
Вы должны уточнить, как и где вы видите, как это происходит. Я не знаю об этом в текущем Linux, таком как RHEL/CentOS 7.7. Но в более старых версиях Linux (, таких как ядро до версии 3.x ), возможно, это было решение, принятое этим дистрибутивом, когда кэширование не было таким надежным, как сейчас (, по моему мнению ). Используя SLES 11.4 несколько лет назад, я почти уверен, что люди SuSE не писали код, чтобы автоматически происходило это удаление кеша, но для некоторых рабочих серверов у меня были люди, у которых мы их купили, и настроили SLES для нас в то время, когда они сделали crontab делать периодическое кеширование отбрасывания, так что это серая зона, почему это делается. Я подозреваю, что это домохозяйство = хороший менталитет, и поскольку это никогда не бывает деструктивной командой, это не может навредить.Несколько раз я вручную выполнял echo 3 > drop_caches
на sles 11.4 для устранения неполадок, так как это никогда ничего не решало там, где в конечном итоге требовалась перезагрузка.
Ознакомьтесь с руководством по настройке производительности RHEL и настройке виртуальной памяти. Я не знаю, насколько это специфично для RHEL по сравнению с достаточно низким уровнем, чтобы быть связанным с ядром Linux, а не специфичным для дистрибутива Linux. Также то, что изменилось с ядра 2.6 на 3.x и 4.x, что, я уверен, важно в этом отношении, поэтому подумайте о том, чтобы прочитать примечания к выпуску ядра Linux.