Как в циклах на bash ограничить размер файла в который идет непрерывная запись

F
На сайте с 18.08.2009
Offline
110
211

 

#!/bin/bash
for ((;;))
do
echo "добрый вечер"
done  >>  ~/file

 Нужно ограничить размер файла в который идет запись и по возможности таймаут цикла уменьшить

htexture
На сайте с 29.05.2017
Offline
211
#1

Чтобы ограничить размер файла в цикле bash, можно использовать функцию stat для получения размера файла и проверять, превышает ли он заданный предел. Если размер файла превышает предел, цикл можно прервать.

Вот один из способов сделать это:

Bash
#!/bin/bash

# Задаем максимальный размер файла
MAX_SIZE=100000

# Получаем текущий размер файла
FILE_SIZE=$(stat -c%s ~/file)

# Проверяем, превышает ли размер файла заданный предел
if [[ $FILE_SIZE -gt $MAX_SIZE ]]; then
  # Прерываем цикл
  break
fi

# Выполняем запись в файл
echo "добрый вечер" >> ~/file
Используйте код с осторожностью.


Этот код будет выполнять цикл до тех пор, пока размер файла не превысит 100 000 байт. Если размер файла достигнет этого предела, цикл будет прерван.

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

Вот один из способов сделать это:

Bash
#!/bin/bash

# Задаем таймаут цикла
TIMEOUT=1

# Выполняем цикл
while true; do
  # Выполняем запись в файл
  echo "добрый вечер" >> ~/file

  # Задержка на 1 секунду
  sleep 1
done
Используйте код с осторожностью.

Этот код будет выполнять цикл без остановки, но каждый раз будет выполняться задержка на 1 секунду. Это уменьшит количество записей, выполняемых в секунду, и, следовательно, уменьшит размер файла.

Можно также использовать комбинацию этих двух методов для достижения наилучшего результата. Например, можно задать максимальный размер файла 100 000 байт и таймаут цикла 1 секунду. Это будет гарантировать, что размер файла не превысит 100 000 байт, и при этом будет выполняться не более одной записи в секунду.


F
На сайте с 18.08.2009
Offline
110
#2
htexture #:

Чтобы ограничить размер файла в цикле bash, можно использовать функцию stat для получения размера файла и проверять, превышает ли он заданный предел. Если размер файла превышает предел, цикл можно прервать.

Вот один из способов сделать это:

Bash
Используйте код с осторожностью.


Этот код будет выполнять цикл до тех пор, пока размер файла не превысит 100 000 байт. Если размер файла достигнет этого предела, цикл будет прерван.

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

Вот один из способов сделать это:

Bash
Используйте код с осторожностью.

Этот код будет выполнять цикл без остановки, но каждый раз будет выполняться задержка на 1 секунду. Это уменьшит количество записей, выполняемых в секунду, и, следовательно, уменьшит размер файла.

Можно также использовать комбинацию этих двух методов для достижения наилучшего результата. Например, можно задать максимальный размер файла 100 000 байт и таймаут цикла 1 секунду. Это будет гарантировать, что размер файла не превысит 100 000 байт, и при этом будет выполняться не более одной записи в секунду.


Спасибо большое. А как это все в один код записать?) Ps первый код без цикла

Сергей
На сайте с 10.07.2022
Offline
43
#3
htexture #:
Чтобы ограничить размер файла в цикле bash, можно использовать функцию

Очень похоже на ответ ChatGpt

Открытый проект для юристов в Москве и Московской области https://ask.mosdok.ru сопровождение сделок, регистрация домов, оформление строительства

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий