Где взять бесконечный файл?
Играюсь с шейпером, чтобы видеть результаты сразу появилась идея — качать бесконечный файл в /dev/null, а по скорости загрузки судить о текущей скорости доступа. Не подскажете, какой сервер умеет отдавать такую бесконечную последовательность и по какой ссылке?
100% кто-то до меня об этом думал.
мне в интернете нужен. Отдайте кто-нибудь по http мне /dev/random или /dev/zero, в общем
спс, конечно, но у меня собственного дедика нету, мне же не в интранете нужно, а в интернете
Подключите временно машину к другой, с этой «другой» отдавайте файл, с машины, на которой хотите настраивать шейпинг тяните. Смысл тянуть именно из интернета, принципы работы сети везде одинаковы.
стукнись мне в жаббер(root@hellheim.net), запилю.
apache + симлинк /dev/zero на /srv/www/anal_pron random ?
Что будет душе угодно: хост на белом айпишнике есьт.
стучусь, не выходит.(
А что, размера DVD образа какого нибудь дистра не хватит?
wget рекурсивно на любой крупный сайтик с кучей файлов(или, к примеру, на репы дебиана) натравливаешь и настраиваешь всё, что угодно.
dvd с нынешними скоростями за минуты скачивается.
Или же можно скачивать один и тот же файл среднего размера скриптом в цикле и несколько потоков.
dvd с нынешними скоростями за минуты скачивается.
Так ты же всё равно шейпер тестируешь.
Зачем тебе бесконечный? Вносишь изменение, пробуешь, повторяешь.
Играюсь с шейпером
по скорости загрузки судить о текущей скорости доступа
появилась идея — качать бесконечный файл в /dev/null
Долго ты собрался его тестировать..
Так ты же всё равно шейпер тестируешь.
Во-первых, шейпер — это не только ограничения скорости. Во-вторых при наличии гигабитного канала протестировать ограничение в сотню мегабит одной dvd-шкой проблематично.
Тут (или не тут) не так давно был пост про публично доступные вебкамеры. На них обычно / по фтп расшарен. Правда, скорость тебя наверное не устроит.
Bittorrent. Несколько BD-Remux-ов на закачке будет норм.
Если там даже небольшой провайдер, dht внезапно добавит головняка )))
Источник
Создать бесконечный цикл повторения файла cat в linux/bash
То, что я хотел бы сделать, — это отправить один файл «повторно» (например, бесконечно много кодов) в качестве входа в другую программу. Есть ли способ в командной строке/с помощью bash?
yes команда, используя содержимое файла в качестве аргумента:
Замена процесса обеспечивает механизм, посредством которого bash может генерировать временную, читаемое имя файла, подключенное к произвольному фрагменту кода bash для вас:
Это создаст имя стиля /dev/fd/NN в операционных системах, которые его поддерживают, или именованный канал в противном случае.
Появляется возможно с помощью mkfifo (этот способ позволяет легко управлять, перезапускать и большие файлы)
Затем напишите, что fifo » looping» из одной подсказки bash, например: create script с именем bash_write_eternal.sh:
запустите это в одном терминале
(вы можете использовать его также, если хотите повторно использовать один и тот же терминал)
затем в другом терминале запустите программу ввода, например
ваша программа теперь будет получать вечный ввод этого цикла файлов снова и снова. Вы даже можете «приостановить» принимающую программу, прервав терминал, на котором запущен bash_write_eternal.sh script (его ввод будет приостановлен до тех пор, пока вы не возобновите запись fifo script).
Другим преимуществом является «возобновление» между вызовами, а также, если ваша программа не знает, как получить ввод от «stdin», она может получить ее из имени файла здесь.
Источник
создать бесконечный цикл повторяющегося файла cat в linux / bash
Что я бы хотел сделать, так это посылать один файл «многократно» (например, повторять его бесконечное количество раз) в качестве входных данных для другой программы. Есть ли способ в командной строке / с помощью bash?
5 ответов
Замена процесса предоставляет механизм, с помощью которого bash может генерировать временное читаемое имя файла, связанное с произвольный кусок кода bash для вас:
Это создаст имя стиля /dev/fd/NN в операционных системах, которые его поддерживают, или именованный канал в противном случае.
Команда yes с помощью содержимое файла в качестве аргумента:
Цикл while : повторяется бесконечно:
Чтобы использовать вспомогательную функцию:
Похоже, это возможно благодаря использованию mkfifo (этот способ позволяет упростить управление, возможность перезапуска и большие файлы)
Затем напишите в этот fifo «looping» из одного приглашения bash, например : создать скрипт с именем bash_write_eternal.sh:
Запустить это в одном терминале
(вы также можете использовать фон, если хотите повторно использовать тот же терминал)
Затем в другом терминале запустите свою программу ввода, например
Ваша программа теперь будет получать бесконечный ввод этого файла, повторяющегося снова и снова. Вы даже можете «приостановить» принимающую программу, прервав терминал, выполняющий скрипт bash_write_eternal.sh (его ввод будет приостановлен до тех пор, пока вы не возобновите выполнение скрипта записи fifo).
Другим преимуществом является «возобновляемость» между вызовами, а также, если ваша программа не знает, как получить ввод от «stdin», она может получить его из имени файла здесь.
Источник
Циклы Bash
В этой статье мы продолжим наш цикл про написание скриптов на Bash. Мы уже рассмотрели как работать с архивами и создавать функции, но этого еще недостаточно. Любой уважающий себя язык программирования должен содержать циклы. Цикл — это такая последовательность, которая позволяет выполнять определенный участок кода необходимое количество раз.
С помощью циклов вы можете очень сильно сократить количество строк кода, которые необходимо написать для однотипных операций. В этой статье мы рассмотрим что такое циклы Bash, как их создавать и использовать.
Циклы Bash
Как я уже сказал, циклы позволяют выполнять один и тот же участок кода необходимое количество раз. В большинстве языков программирования существует несколько типов циклов. Большинство из них поддерживаются оболочкой Bash. Мы рассмотрим их все в сегодняшней статье, но сначала поговорим какими они бывают:
- for — позволяет перебрать все элементы из массива или использует переменную-счетчик для определения количества повторений;
- while — цикл выполняется пока условие истинно;
- until — цикл выполняется пока условие ложно.
Циклы Bash, это очень полезная вещь и разобраться с ними будет несложно. Bash позволяет использовать циклы как в скриптах, так и непосредственно в командной оболочке. Дальше мы рассмотрим каждый из этих видов циклов.
Цикл for
Цикл for bash применяется очень часто из-за своей специфики. Его проще всего использовать когда вы знаете сколько раз нужно повторить операцию или вам нужно просто обработать по очереди все элементы массива и вы не хотите контролировать количество повторений.
Цикл for имеет несколько синтаксисов и может вести себя по разному. Для перебора элементов списка удобно использовать такой синтаксис:
for переменная in список
do
команда1
команда2
done
Каждый цикл for независимо от типа начинается с ключевого слова for. Дальше все зависит от типа. В этом случае после for указывается имя переменной, в которую будет сохранен каждый элемент списка, затем идет ключевое слово in и сам список. Команды, которые нужно выполнять в цикле размещаются между словами do и done.
Проверим все на практике и напишем небольшой скрипт, который будет выводить номера от 1 до 5:
!/bin/bash
for number in 1 2 3 4 5
do
echo $number
done
Дайте скрипту права на выполнение и запустите его:
chmod +x for1.sh
./for1.sh
Вы увидите, что все выполняется так, как и предполагалось. Программа выведет цифры от 1 до 5, которые мы перечислили в массиве. Вы можете передать циклу любой массив, например, вывод какой-либо другой команды:
for iface in $(ls /sys/class/net/)
do
echo $iface
done
Как вы уже поняли, этот цикл выводит список всех, подключенных к системе сетевых интерфейсов. Но в цикле вы можете не только их выводить, но и выполнять какие-либо действия.
Следующий тип цикла for похож на его реализацию в языках программирования Си и С++. Он состоит из трех частей, инициализатора счетчика, условия продолжения выполнения и действия над счетчиком. Вот синтаксис:
for (( счетчик = 1 ; счетчик 10 ; счетчик ++ ))
do
команда1
команда2
done
Этот цикл немного сложнее, но он позволяет сделать больше. С помощью такого цикла можно не только перебирать массивы, но и сделать необходимое количество повторений. Рассмотрим пример:
!/bin/bash
for ((i=1; i
Результат странный, правда? Обратите внимание, как выполняется проверка условия. Значение счетчика сравнивается с эталоном. Действие с переменной счетчиком выполняется сразу же после завершения основного блока команд, а уже потом делается сравнение. Таким образом, у нас при первом выполнении i равно 1, а после него уже два 2. Теперь к завершению девятого прохода значение счетчика будет увеличено на единицу и станет 10. Условие сравнения 10 !/bin/bash
for ((;;))
do
echo «Бесконечный цикл, нажмите CTRL+C для выхода»
done
Если необходимо, вы можете выйти из цикла преждевременно. Но так делать не рекомендуется. Для выхода используйте команду break:
Со циклами for мы завершили, теперь вы знаете как они выглядят и что с ними делать. Дальше мы рассмотрим циклы while и until. Они намного проще и более универсальны.
Цикл While
Суть цикла While в том, что он будет повторяться до тех пор, пока будет выполняться условие, указанное в объявлении цикла. Здесь нет никаких счетчиков и если они вам нужны, то организовывать их вам придется самим. Bash цикл while имеет такой синтаксис:
while [ условие ]
do
команда1
команда2
команда3
done
Это работает так: сначала выполняется проверка на правильность условия, если true, выполняется набор команд, затем снова выполняется проверка, и так пока условие не вернет отрицательный результат. Это нам тоже нужно сделать вручную. Рассмотрим пример:
!/bin/bash
x=1
while [ $x -lt 5 ]
do
echo «Значение счетчика: $x»
x=$(( $x + 1 ))
done
Здесь сначала мы устанавливаем значение счетчика в единицу, затем, в условии сравниваем его с 5, пока счетчик меньше пяти будут выполняться команды из блока do-done. Но еще в этом блоке нам нужно увеличивать значение счетчика на единицу, что мы и делаем.
Также с помощью while мы можем прочитать несколько строк из стандартного ввода:
!/bin/bash
hile read line
do
echo $line
done
Программа будет запрашивать новые строки пока вы не передадите ей символ конца файла с помощью сочетания клавиш Ctrl+D. Бесконечный цикл while bash с помощью while еще проще организовать:
while :
do
echo «Бесконечный цикл bash, для выхода нажмите Ctrl+C»
done
Цикл until
Нам осталось рассмотреть последний цикл. Это цикл until. Он очень похож на while и отличается от него только работой условия. Если в первом нужно чтобы условие всегда было истинным, то здесь все наоборот. Цикл будет выполняться пока условие неверно. Синтаксис:
until [ условие ]
do
команда1
команда2
done
Думаю после рассмотрения реального примера со счетчиком будет намного понятнее как это работает:
!/bin/bash
count=1
until [ $count -gt 10 ]
do
echo «Значение счетчика: $count»
count=$(( $count + 1 ))
done
Мы задаем значение счетчика 1 и увеличиваем его на единицу при каждом проходе. Как только условие счетчик больше 10 выполнится, сразу цикл будет остановлен. В циклах while и until тоже можно использовать команды break и continue для выхода из цикла и завершения текущего прохода, но мы не будем это очень подробно рассматривать.
Выводы
В этой статье мы рассмотрели циклы Bash, как с ними работать и в каких ситуациях их можно использовать. Циклы могут стать отличным и незаменимым инструментом при создании сложных скриптов администрирования системы. Если у вас остались вопросы, спрашивайте в комментариях!
Источник