#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 хранят на вашем диске множество очищаемых файлов и удаляют их только при нехватке свободного места.