Современные оболочки - это языки программирования, поэтому вы можете использовать арифметику для проверки состояния дат. Однако 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
строки, чтобы печатать новую точку на каждой итерации.