Как вставить vmstat вывод в файл, поддерживающий только самую последнюю запись всегда

Я хочу вставить vmstat вывод в файл каждые 10 секунд. Для этого я использую следующую команду.

vmstat 10 > vmstatfile.txt 

Это создаст файл с именем vmstatfile.txt и добавит к нему каждые 10 секунд. Я хочу, мой файл должен всегда содержать одну запись vmstat, самую последнюю, так что файл не будет расти. Это возможно? Тогда как я могу это сделать?

    Ну, без аргумента vmstat печатает один отчет, поэтому вы можете запустить его в простой оболочке с задержкой:

     while true; do vmstat > vmstatfile.txt sleep 10 done 

    Однако этот первый отчет является средним с момента загрузки, поэтому, если вы хотите, чтобы файл содержал отчет за последний период, вам нужно будет запросить как минимум два отчета. Если вы хотите избавиться от первого отчета, напечатанного при каждом прогоне, вы можете удалить его (удалить третью строку) с помощью sed . Мы должны будем использовать временный файл здесь, поэтому фактический целевой файл не будет содержать частичный вывод в любой точке.

     while true; do vmstat 10 2 | sed -e 3d > vmstatfile.tmp mv vmstatfile.tmp vmstatfile.txt done 

    Вот простейший способ сделать это: только одна внешняя команда работает вечно ( vmstat ) и без дополнительных команд вместо трех внешних команд, запускаемых каждые десять секунд с предложением ilkkachu:

     vmstat 10 | while read line; do echo "$line" > vmstat.out done 

    В течение первых десяти секунд файл vmstat.out будет содержать средние значения после последней перезагрузки. Впоследствии будет обновляться актуальная статистика, которая именно то, что было предложено:

    мой файл всегда должен содержать одну запись vmstat , последнюю, чтобы файл не увеличивался.