Создайте постоянно увеличивающийся файл в Mac OS с помощью терминала

#macos #terminal #storage

#macos #терминал #Хранение

Вопрос:

Я хочу освободить некоторое хранилище и очистить системные данные на моем Mac. Я сделал это один раз эффективно, следуя инструкциям в Stackoverflow, в которых говорилось о создании файла, размер которого постоянно увеличивается, а затем для удаления этого файла. Я больше не могу найти эту тему и не помню команды терминала. Итак, как мне создать постоянно увеличивающийся файл на моем Mac с помощью терминала? Спасибо.

Ответ №1:

Вам нужно объяснить, какой предел вы ищете. Создание файла «постоянно увеличивающегося в размере» в конечном итоге съест все ваше дисковое пространство, и ОС выйдет из строя, что вынудит вас к восстановлению. Стандартным инструментом * nix / osx для этого является dd.

Вот типичный пример

 dd if=/dev/zero of=FileName bs=2048 count=1000
 

Важные параметры здесь:

  • if=/dev/zero считывает данные из системного файла, который содержит только нули. Вы будете использовать это точно так, как есть
  • bs = 2048 это размер блока файла в байтах (2k). Используйте это
  • count = 1000 Ваш файл будет равен bs * count, так что в данном случае 1000k, т.е. 2 мб.
  • of=Filename — это имя выходного файла. Если вы опустите это, данные будут записаны в standard out, что вы можете использовать в своих интересах, добавив данные в существующий файл.

Вот скрипт bash, который будет медленно создавать большой файл в каталоге /tmp. Он добавляет 2 МБ к файлу каждый раз, затем проверяет свободное место в файле и будет выполняться до тех пор, пока вы не достигнете порогового значения, или вы можете завершить его в терминале вручную.

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

 #!/bin/bash
#make_empty_file.sh
echo "Writing to /tmp/empty_file.bin"
touch /tmp/empty_file.bin

let gb="1024*1000*5"
df=`df -Pk . | sed 1d | grep -v used | awk '{ print $4 "t" }'`

while [ $gb -lt $df ] 
do
    dd if=/dev/zero bs=2048 count=1000 >> /tmp/empty_file.bin
    sleep 2
    df=`df -Pk . | sed 1d | grep -v used | awk '{ print $4 "t" }'`
    free=$((df/1024))
    echo "$free Megabytes free..."  
done
 

Комментарии:

1. Вам нужно знать, как сделать ваш скрипт исполняемым с помощью chmod.

2. Пороговое значение установлено на 5 ГБ. Таким образом, он будет выполняться до тех пор, пока у вас не останется <5 ГБ свободного места. Измените let gb="1024*1000*5" строку и установите для нее значение больше или меньше 5 в этом расчете, если вы хотите занимать больше или меньше места. Когда у вас останется менее 1 гб свободного места, все действительно начнет тормозить, и ОС может выйти из строя, если у вас мало памяти и подкачки.

3. Заполнение HD не приведет к сбою и принудительному восстановлению. Это не 1998 год. 🙂

4. @TyR если компьютер выйдет из строя, при перезагрузке он запустит fsck на диске. Это то, что я имел в виду.

Ответ №2:

Причина, по которой вы хотите создать файл, кажется мне странной, но в любом случае, это простой способ создать быстрорастущий файл:

 yes > /path/to/file.txt
 

Комментарии:

1. какого размера будет этот файл?

2. Верхний предел составляет 8e9 ГБ на более старой версии HFS с максимальным объемом 2 ^ 32-1 на том, 9e9 ГБ, если вы используете файловую систему Apple, в которую вы можете записать до 2 ^ 63 файлов на том.

3. Это кажется странным, но, к сожалению, в наши дни это практичный метод. Новые версии macOS хранят на вашем диске множество очищаемых файлов и удаляют их только при нехватке свободного места.