Я пытаюсь реализовать таймер для 5 минут (300 секунд) в миллисекундах, но он занимает более 5 минут для сна 0,001.таймер bash в миллисекундах
Если я меняю if [ $t -ge 300000 ]
на if [ $t -ge 30000 ]
, он завершается в течение 3 минут.
df1, df2 имеет значение дискового использования в моменты времени t1 и t2 соответственно.
t=0
x=0
df1
while [ $x -lt 10000 ]
sleep 0.001
df2
x=((df1-df2))
if [ $t -ge 300000 ]
then
t=0
df1
else
((t++))
fi
done
dosomething
Я хочу тест $x
для каждого 0.001secs. df1
и df2
должны выдерживать новые значения за каждые 300 секунд. как я могу это достичь?
Zaheer: Не уверены в ваших полных требованиях, почему бы не поставить сразу 300 (на 5 минут), несмотря на то, что он написал новый код? – RavinderSingh13
Почему бы просто не спать 300? Если вам действительно нужно повторять так быстро (это очень короткий интервал ожидания и, вероятно, объясняет продолжительность дрейфа), вы должны основывать свое сравнение на чтении текущего времени и сравнении с предыдущим временем, а не на спящем предопределенную продолжительность и увеличивая счетчик. Вы можете использовать 'date +% s' для получения счетчика с шагом в секундах на основе системных часов для этой цели. – Fred
Мне нужно отслеживать использование диска за каждый t (0,001) секунд, если есть какая-либо огромная разница ($ x) в течение 300000 секунд, это должно предпринять некоторые действия. Если я использую sleep 300, сценарий будет простаивающим и не будет контролировать df в течение этого периода времени. Я хочу принять быстрые действия, следовательно, 0.001. – Zaheer