Однострочники bash с объяснениями

Сие опубликовал в день года

o="-vvvvvv";for i in 0 {2..7}; do c="aptitude ${o:0:$i} moo";echo "$ $c"; $c; done

Исследование коровьих супер сил aptitude в одну строку. В aptitude есть пасхальное яйцо по аналогии c apt-get, но поначалу программа пытается отнекиваться и говорит, что в ней нет пасхальных яиц. Не верьте ей.

Как это работает

o="-vvvvvv"

Взята строка с самым длинным параметром.

for i in 0 {2..7}

Цикл берет значения i равные 0, 2, 3 и так до 7. Это делается для того, чтобы отрезать куски нужной длины от значения переменной o.

do c="aptitude ${o:0:$i} moo"

Здесь генерируются необходимые нам строки состоящие из слова aptitude и куска строки в переменной o длинной от нуля, то i. В конце добавляется слово moo. Пара примеров строк:

aptitude moo
aptitude -v moo

и так далее до

aptitude -vvvvvv moo

echo "$ $c"

Печатаем получившуюся команду в виде строки.

$c

Выполняем получившуюся команду.

Если что-то осталось не понятным, то спрашивайте в комментариях.

Оболочка bash - горячие клавиши и поиск

Сие опубликовал в день года

Не стоит удивляться тому, что в оболочке bash присутствует большой набор горячих клавиш, который может сделать вашу работу с командной строкой значительно легче. Возможность редактировать содержимое командной строки предоставляет библиотека GNU Readline. Эту библиотеку используют также некоторые другие *nix приложения, поэтому изучение предложенных ниже горячих клавиш позволит вам улучшить свою продуктивность не только в оболочке bash.

Редактирование команд bash

Ctrl + a – перейти на начало командной строки,
Ctrl + e – перейти в конец командной строки,
Ctrl + k – удалить от курсора до конца командной строки,
Ctrl + u – удалить от курсора до начала командной строки,
Ctrl + w – удалить от курсора до начала слова,
Ctrl + y – вставить слово или текст который был вырезано с использованием одного из подходящих сочетаний клавиш,
Ctrl + xx – переместиться между началом командной строки и текущим положением курсора (работает в обе стороны),
Alt + b – переместить курсор на одно слово назад (или переместиться на начало текущего слова),
Alt + f – переместиться вперен на одно слово (или к... Читать целиком.

Изменить размер MTU в Debian

Сие опубликовал в день года

Стандартный MTU (Maximum Transmission Unit, то есть максимальный блок передаваемых за раз данных) составляет 1500 байт, однако может быть увеличен до числа в диапазоне 1501 - 9198, что зависит от производителя оборудования. Чтобы увеличение MTU прошло успешно, заданный размер должен поддерживаться оборудованием на обоих концах кабеля.

Тестирование

Чтобы убедиться, что ваше оборудование поддерживает большие пакеты, можно воспользоваться утилитой ping. Для тестирования на MacOS используйте команду:

ping -D -s 8184 ip.add.re.ss

В Linux:

ping -M do -s 8972 ip.add.re.ss

В Windows:

ping -f -l 9000 ip.add.re.ss

В *nix системах ping не включает заголовки ICMP (8 байт) и TCP (20 байт), поэтому мы должны вычесть их самостоятельно. Что касается MacOS, то в этом случае реализация ping не позволяет передавать больше 8192 байт, а также мы должны дополнительно вычесть 28 байт.

Возможные результаты

Если вы забыли включить jumbo frames/9k MTU на вашем клиентском устройстве, то получите следующий вывод:

PING ip.add.re.ss (ip.add.re.ss): 8184 data bytes
ping: sendto: Message too long

Если вы увеличили размер MTU на клиенте, но не на конечной... Читать целиком.

Изменить txqueuelen в Linux

Сие опубликовал в день года

Как изменить txqueuelen (длину очереди передачи) для сетевого устройства в Linux? Какое значение необходимо установить для сетей с высокими задержками или высокими скоростями для массового распределения трафика от интерактивных сервисов?

Вы можете установить длину очереди передачи устройства с помощью команды ifconfig или ip. Значение txqueuelen нужно выбирать из следующих соображений:

  • Маленькое значение для более мендленных устройств с высокими задержками, таких как модемные линии и ISDN.
  • Высокое значение рекомендовано для серверов с высокоскоросным соединением с интернетом через которое проходит большое количество данных.

Увеличить параметр txqueuelen на значение между 1000 и 20000 в зависимости от интерфейса:

ifconfig ${interface} txqueuelen ${size}

Например:

ifconfig eth1 txqueuelen 10000
ifconfig eth0 txqueuelen 5000

Также можно использовать утилиту ip:

ip link set ${interface} txqueuelen ${size}

Например:

ip link set eth1 txqueuelen 10000
ip link set eth0 txqueuelen 5000

Чтобы необходимые значения устанавливались при старте системы добавьте в файл /etc/rc.local строки вида:

/sbin/ifconfig eth1 txqueuelen 10000

или

/sbin/ip link set eth1 txqueuelen 10000

iperf в Debian - тест скорости сети

Сие опубликовал в день года

Утилита iperf используется для измерения пропускной способности сети. С помощью iperf можно тестировать пропускную способность как протокола TCP, так и протокола UDP. Для осуществления тестирования пользователь должен запустить как серверную часть (для приема и отбрасывания трафика), так и клиентскую (для генерирования трафика). Мы будем говорить об iperf версии 2 в Debian Linux.

Таким образом утилита iperf позволяет загрузить канал между клиентом и сервером на полную и посмотреть его максимальную пропускную способность в момент тестирования. К примеру, если вы арендовали VPS-сервер, то вы можете проверить соответствует ли пропускная способность сети сервера заявленной вашим хостинг-провайдером. Это не значит, что ваши сайты будут открываться с полученной скоростью, так как iperf тестирует именно максимальную скорость канала, а не скорость работы программ установленных на вашем сервере.

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

Наверх