1
top -o %MEM -b > file.txt

time1 = 27 марта 21:27:55

time2 = 28 марта 20:27:32

Мне нужно только перенаправить вывод команды top -o %MEM -b в output.txt

если время1 <= дата1 <= время2

где time1 time2 date1 являются датой я выбираю! Я мог бы использовать время Unix!

Возможно ли это в оболочке Linux?

Как мне это сделать? Я должен сохранить информацию в формате XML/JSON вместо текстового файла!

1 ответ1

1

Современные оболочки - это языки программирования, поэтому вы можете использовать арифметику для проверки состояния дат. Однако top в пакетном режиме выполняется до тех пор, пока не будет достигнут предел итерации, и после запуска top вы не сможете проверить условие дат. Поэтому вы должны запустить top с лимитом итерации, установленным в 1, и перезапустить его в цикле while

#!/bin/bash
output_file="file.txt"
iteration_delay=5s
time1=1491004315
time2=3500000000
date1=`date +%s` #we initialize date1 with current unix time

while ((1)); do
    if (($time1 <= $date1 && $date1 <= $time2)); then
        top -o %MEM -b -n 1 >> $output_file
    fi
    sleep $iteration_delay
    # something should update date1, time1 or time2 here...?
done

РЕДАКТИРОВАТЬ: Чтобы использовать этот скрипт, скопируйте / вставьте его, например, в файл mytop.sh, установите исполняемый файл на нем:

chmod +x mytop.sh

и затем вы можете запустить его как обычно:

./mytop.sh

Чтобы отменить, нажмите Ctrl+C.

Там нет визуального индикатора, он работает, и некоторые люди чувствуют себя лучше, когда есть выход. Если вы хотите, вы можете добавить, например:

echo .

строка в скрипте после sleep строки, чтобы печатать новую точку на каждой итерации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .