4

так что я и мой друг устраиваем конкурс. Он говорит, что у него есть способ заполнить ОЧЕНЬ много места на жестком диске на сервере Linux, не будучи пользователем root. Очевидно, что если вы root, вы можете использовать DD для этого, но в нашем конкурсе нет root. Есть ли хорошие способы сделать это?

5 ответов5

10

Как обычный пользователь, запустите:

dd if=/dev/zero of=~/foo bs=1M

Это делает пустой (но все еще занимающий много места файл) в ~/foo. На моем компьютере файл набухал со скоростью 39,9 МБ / с (мой процессор - 64-битный Pentium 4 с тактовой частотой 3,0 ГГц), хотя я представляю, что вы можете открыть несколько терминалов и запустить их все одновременно ...

Если это только командная строка, и вы можете одновременно открыть только один терминал, сделайте следующее:

dd if=/dev/zero of=~/foo0 & dd if=/dev/zero of=~/foo1 & dd if=/dev/zero of=~/foo2 & dd if=/dev/zero of=~/foo3

..это нужно заполнить этот жесткий диск в одно мгновение.

5

Вам не нужен root для запуска dd.

Вы можете сделать это разными способами. Использование /dev/zero в качестве бесконечного источника нулей - это то, что, по-видимому, происходит со всеми нами и допускает такие вещи, как:

  • cat /dev/zero > ~/my_huge_partition_filling_file .
  • cp /dev/zero ~/my_huge_partition_filling_file .
  • Или, излишне сложно, используя dd в качестве пользователя:
    dd if=/dev/zero of=~/my_huge_partition_filling_file bs=512K . (Часть b lock s ize является необязательной, но ее значение, превышающее 512 байт, может ускорить процесс и сократить издержки).
  • Или вы можете создать свой собственный файл. Возьмите любой файл, объедините его с собой, чтобы создать второй файл двойного размера, затем повторите это. Это то, что делает ответ Тердона.
  • Или вы можете написать программу для бесконечной записи в файл. Это, вероятно, излишне сложно, и стандартные инструменты часто быстрее. Кроме того, он чувствует себя как "un-unix-like").

Вы также можете подделать огромный файл, создав разреженный файл. dd if=/dev/zero of=~/my_seemingly_huge_file skip=99999G мгновенно создаст очень маленький файл размером 99999 ГБ. Если хотите, можете прочитать с него 99999 ГБ. Однако на практике он практически не занимает места.

Сравните это с книгой со сменными страницами. Обычно у вас есть страница 1,2,3,4,5,6 .... (конец книги). С пропуском у вас есть страницы 1,2,3, 99999. (страницы 4,5,6, ... и т.д. Будут вставлены при записи, но до этого времени книга будет очень тонкой).

Наконец, прежде чем пытаться что-либо из этого: Проверьте, где вы пишете.

Если это on /home (например, /home/myusername) и /home смонтирован в своем собственном разделе, то все, что вы можете сделать, это заполнить место для homedir. Если кто-то сделал что-то глупое, например, поместив /home в корневую файловую систему, вы можете заполнить это до 95%. Большинству администраторов это не понравится.

(95%, или фактически 92,2%, потому что настройки по умолчанию в большинстве файловых систем зарезервировали 5% для root. Это означает, что он может быть заполнен до 105%, и в качестве пользовательского заполнения он будет использовать (100/105)%, или 95,2%)

3

Вы можете занять все пространство на жестком диске, выполнив что-то такое простое, как:

echo foo > f1.txt; 
while true; do 
    cat f1.txt >> f2.txt && 
    cat f2.txt >> f1.txt; 
done

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

Решение dd конечно, гораздо более эффективно, просто отметив, что вам наверняка не нужен root-доступ.

2

Вы можете заполнить диск командой "да":

yes garrbage > ~/junk

Чтобы предотвратить, лучше определить квоту для пользователей или использовать ulimit -f чтобы предотвратить создание большого файла.

Смотрите man-страницу квоты для получения дополнительной информации.

1

Первое: вам не нужно быть пользователем root, чтобы использовать dd или другие инструменты для создания большого или большого количества файлов.

Но второе: вы не можете заполнить диск, если он отформатирован с параметрами по умолчанию, потому что наиболее используемые файловые системы linux сохраняют 5% дискового пространства, зарезервированного для root, поэтому ни один тупой пользователь не может заполнить диск и привести к сбою системы, потому что действительно важные процессы не могут напишите их файлы (подумайте о sshd, syslogd и т. д.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .