BashMaster
Open in Telegram
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов. Реклама: @Kone4noVasya Канал на бирже: https://telega.in/c/bash_help
Show more8 882
Subscribers
-524 hours
-157 days
+630 days
Posts Archive
8 883
📚Библиотека промптов для самых разных задач и профессий
Внутри - сотни проверенных запросов для ChatGPT, которые удобно разбиты по категориям (от домашнего обучения до маркетинга и разработки)
Библиотека постоянно обновляется, а доступна она здесь - Нейрон
Сохраняй и пользуйся!💾
8 883
⚙️ 18 отборных однострочных команд Linux
✔️В этой статье описан ряд функциональных, полезных, а порой и опасных команд, чтобы продемонстрировать потенциал использования оболочки Bash в Linux. Некоторые из них, действительно, потребуют соблюдения осторожности, так как иначе можно потерять все свои данные. Другие же, наоборот, окажутся очень покладистыми и полезными для повышения эффективности работы.
▶️Опасные команды! Выполняйте их, только если уверены в своих действиях. В начало и конец каждой добавлены символы
- - , чтобы их нельзя было просто скопировать и вставить.
➡️ fork-бомба
▶️Эта «команда» при выполнении на ПК не представляет особой угрозы, но вот ее запуск на сервере может привести к отказу в обслуживании.
▶️Выглядит она как странный набор символов, хотя на деле это реальное определение функции bash.
▶️В bash допускается использовать в качестве имени функции — :
И в случае выполнения команды :(){ :|:& };:, именно такую функцию мы и создаем. Внутренне она рекурсивно вызывает сама себя, то есть выполняется бесконечно, а с помощью &
мы инструктируем процесс выполняться фоново.
$ -- :(){ :|: & };: --
➡️ Прямая запись на жесткий диск
Вы легко повредите файловую систему, если при выполнении любой команды сохраните ее вывод на диск. Так кому же это может понадобиться?
$ -- "a command" > /dev/sda --
▶️Запись на диск случайных данных
Эта команда может пригодиться, например, для перезаписи секторов диска с целью исключения возможности восстановления данных. Напомню, что при наличии правильного инструмента вернуть данные после форматирования диска трудностей не составит.
▶️Если использовать эту команду в цикле и выполнить ее 3-4 раза, то она в достаточной степени гарантирует невозможность восстановления удаленной информации.
$ -- dd if=/dev/urandom of=/dev/disk --
//for i in {1..10}; do dd if=/dev/urandom of=/dev/disk; done
➡️ Удалить все
▶️Эта команда удаляет все, включая файлы на жестком диске и подключенных устройствах, что делает ее очень опасной, поскольку разрешения она не спрашивает.
▶️С помощью флага rf мы инструктируем ее выполняться рекурсивно и удалять все файлы без запроса разрешения.
▶️Символ / указывает, что начинать нужно с корневого каталога, который содержит все файлы и все смонтированные устройства с данными, включая удаленные файловые ресурсы и съемные диски. (прим. пер.: современные дистрибутивы не дают просто так удалить /, надо либо добавить --no-preserve-root, либо удалять /* (все файлы в корневом каталоге).
$ -- rm -rf / --
🖼️ Дочитать статью
🔨 bash_help8 883
Большинство разработчиков стремится повысить свой грейд, но как и куда расти, если ты амбициозный мидл или уже синьор? Откуда брать насмотренность и опыт, если ты ограничен задачами своей компании, а одними статьями на Хабре проблему не решить?
Чтобы расти в профессии и получать крутые офферы, разработчик может прокачать навык построения архитектуры. Он может собрать библиотеку из каналов, статей и видео или пройти полноценный курс.
Курс «Архитектор ПО» от Практикума поможет развить навык решения архитектурных задач. Техлиды Яндекса и других компаний покажут противоположные архитектурные подходы. Благодаря этому разработчику не придётся учиться на своих ошибках — он научится на опыте коллег. За 6 месяцев курса он разработает и добавит в портфолио 5 архитектур.
Курс подойдёт бэкенд-разработчикам, которые:
— работают 2+ лет;
— хотят развиваться на текущей позиции и повышать свой грейд;
— хотят получить должность лида или архитектора ПО.
Успейте записаться на ближайший поток по ссылке
8 883
⚙️ Объектно-ориентированное программирование на bash
✔️Оболочка bash не имеет возможностей создания объектов и работы с ними. Тем не менее, можно написать скрипты таким образом, чтобы скрипт был достаточно сильно похож на объектно-ориентированную программу, и реализовать таким образом объектно-ориентированное программирование на bash.
➡️ Давайте посмотрим, как можно написать скрипты, которые похожи на программу с объектами. Для этого нам надо сэмулировать методы и свойства объектов. И единственная возможность это сделать — это использование функций.
▶️В первую очередь надо определиться с названием класса. Пусть это будет класс «obj». А объект мы назовем «myobject». В скрипте объект будет создаваться следующим образом:
obj myobject▶️Это чем-то похоже на другие языки, где вы сначала пишете название типа переменной, а затем название переменной. Пусть в нашем скрипте это будет тоже так же, чтобы было больше похоже на другие языки. ▶️При создании объекта нам по логике вещей необходимо вызвать конструктор экземпляра объекта. И этим конструктором будем именно функция obj. Для лучшего вида программы сделаем следующее: вынесем obj в отдельный файл, и для сходства с другими языками назовем его «obj.h». Это будет заголовочный файл, мы будем его подключать. Этот заголовочный файл будет иметь всего одну функцию: obj
obj(){
}
▶️И пока отложим эту функцию. Наша программа тем временем выглядит вот так:
. obj.h obj myobjectДавайте добавим в программу работу с методами и свойствами объекта.
. obj.h obj myobject # вызов метода myobject.sayHello # работа со свойствами объекта myobject.fileName = "file1"▶️И добавим для красоты еще один объект — stdout, это будет объект, реализующий вывод на экран.
stdout.printString "Property value is:" stdout.printValue myobject.fileName▶️Для него нам тоже понадобится заголовочный файл, назовем его «system.h». Теперь наша программа выглядит так:
. obj.h . system.h obj myobject myobject.sayHello myobject.fileName = "file1" stdout.printString "value is" stdout.printValue myobject.fileName▶️Теперь надо всё это заставить корректно работать. 🖼️ Дочитать статью в источнике 🔨 bash_help
8 883
Скидка 35% раз, скидка 35% два, ПРОДАНО: аукцион выделенных серверов от Selectel
Если вам нужны вычислительные мощности для ваших проектов, сейчас самое время арендовать сервер в Selectel по выгодной цене. Аукцион выделенных серверов — акция от Selectel, когда цена не растет, а снижается каждую секунду.
Ежедневно к заказу доступно более десятка готовых конфигураций с отличными скидками. Список серверов на аукционе и размер скидки постоянно обновляются, так что не упустите выгодное предложение, их быстро разбирают.
Почему стоит арендовать выделенный сервер в Selectel?
- Серверы на базе процессоров Intel и AMD справятся с любыми нагрузками
- Скидка аукциона закрепляется за вами и сохраняется навсегда
- Безлимитный бесплатный интернет со скоростью 1 Гбит/сек
- Защита от DDos атак входит в стоимость аренды
- Полное соответствие стандартам 152-ФЗ
Все конфигурации протестированы и готовы к работе, на их запуск потребуется от 2 минут. Заказать инфраструктуру и управлять ею можно в одном окне браузера — через удобную панель.
Арендуйте выделенный сервер от Selectel по выгодной цене, пока это не сделал кто-то другой: https://slc.tl/06fgf
Реклама АО «Селектел». ИНН: 7810962785 Erid: 2VtzqxgUA7L
8 883
⚙️ Пять терминальных программ для вывода информации о дистрибутиве Linux
➡️ Neofetch
Простая утилита, написанная на Bash и предназначенная для вывода информации о программном и аппаратном обеспечении вашего дистрибутива. «Выхлоп» приятен взгляду: выводится логотип вашего дистрибутива в формат ASCII и краткая информация о дистрибутиве. После первого запуска утилиты создается конфигурационный файл, в котором можно поменять логотип и вывод информации. «Выхлоп» утилит прост и понятен для любого пользователя.
➡️ Screenfetch
Полезная консольная утилита также написанная на Bash, позволяющая выводить информацию о процессоре, видеокарте, потребляемой оперативной памяти, типе дистрибутива, версии ядра и иную информацию.
В отличие от предыдущей утилиты Screenfetch не создает конфигурационный файл, содержание выводимой информации управляется посредством использования ключей. Чтобы посмотреть какие ключи можно использовать, введите команду с ключом -h (help).
➡️ Nerdfetch
В отличие от предыдущих двух утилит, эта отличается минимализмом в плане выводимой информации. Она более для красоты «выхлопа», чем для его пользы и содержательности. Перед тем как использовать Nerdfetch необходимо установить в дистрибутив шрифты Nerd. Скачать нужные шрифты вы можете с официального сайта или использовать встроенный в систему пакетный менеджер.
➡️ Macchina
Еще одна минималистичная утилита, выводящая информацию о дистрибутиве. В отличие от всех предыдущих она имеет встроенную поддержку тем и поддерживает кастомизацию через конфигурационный файл (прям как у Neofetch). С одной стороны это является преимуществом утилиты, но новичку нужно будет время, чтобы разобраться (при желании) в конфиге и настроить его под себя.
➡️ Pfetch
Еще одна минималистичная утилитка, выводящая информацию о дистрибутиве. Настраивать вывод можно посредством изменения переменных окружения. Примеры конфигурирования разработчики приводят на официальной странице проекта в Github.
🖼️ Ссылка на источник
🔨 bash_help
8 883
✋ 14 октября (пн) приглашаем вас на встречу потенциальных докладчиков с Программным комитетом DevOpsConf 2025.
Собираемся в 19.00 Мск.
📌 Форматы:
Офлайн. Москва, офис Газпромбанк, Коровий Вал 5, БЦ «Оазис».
Онлайн. Ссылка придёт после регистрации на встречу, участие свободное.
😎 От Программного комитета во встрече будут участвовать:
Дмитрий Зайцев (Flocktory) — руководитель Программного комитета DevOpsConf, Александр Коротков (Т-Банк), Игорь Курочкин (Enabling.team).
✍ Обсудим новости и планы, поговорим о том, что болит и волнует, обменяемся идеями. Вы узнаете актуальна ли ваша тема и нет ли похожих докладов от других спикеров, а также мы расскажем, как проходит процесс отбора заявок в программу и подготовка принятых докладов к выступлению.
Зарегистрироваться на встречу и подать заявку на доклад можно на сайте.
До встречи 14 октября! Ждём вас 🤝
Реклама. ООО "КОНФЕРЕНЦИИ ОЛЕГА БУНИНА". ИНН 7733863233.
8 883
⚙️ Фейковый SMTP-сервер на bash
✔️Когда вы разрабатываете веб-приложение, вам, возможно, надо будет отправлять какую-то электронную почту. Например, со ссылкой на подтверждение регистрации нового пользователя. И использовать для этого реальные адреса может быть проблематично, если не используется полноценный почтовый сервер, так как почта, отправленная с сервера, на котором ведется разработка, или с виртуальной машины, доставлена скорее всего не будет. К тому же, если при отправке формируются реальные адреса, скажем, из базы, то отправлять наружу такие письма никак нельзя. Эту проблему можно решить достаточно просто.
▶️Для этого нам может пригодиться почтовый сервер, который никуда отправлять почту не будет, он будет работать как нормальный почтовый сервер, но фактически будет складывать отправленные через него письма в директорию в виде файлов, либо просто выводить на экран. Реализовать его можно, например, на bash.
➡️ Требования
Каким требованиям должен удовлетворять такой сервер:
▶️Слушать порт 25/tcp, на котором работает обычно SMTP-сервер
▶️Принимать само письмо и записывать его в файл, либо на терминал
▶️Поддерживать команды протокола SMTP
➡️ Протокол SMTP
Сам по себе протокол SMTP очень простой, но реализовывать его целиком мы не будем. Нам нужны будут только следующие команды:
HELO имя/IP-адрес — Начало сессии
MAIL FROM: отправитель — Отправитель письма
RCPT TO: получатель — Может быть несколько таких заголовков
DATA — Начало ввода данных
. (точка) — Окончание ввода данных (Строка, состоящая из одного символа)
QUIT — Окончание сессии
➡️ Фейковый SMTP-сервер
Это будет достаточно небольшой скрипт. Его первая задача — открыть порт 25/tcp и слушать его. Как только на этом порту будет введена команда, ее надо обработать и соответствующим образом прореагировать.
▶️Для того, чтобы запустить скрипт, нам понадобятся права пользователя root, поскольку порт 25 является привелегированным, а также установленный пакет netcat.
#!/bin/bash
# Адрес, на котором будет слушаться порт
LISTEN="192.168.0.6"
S=./tmp
[ -p $S ] || mkfifo $S
start_smtp(){
(tail -f $S) | ( netcat -l -p 25 $LISTEN ) | (
# Баннер почтового сервера
echo "220 fake smtp server" > $S
# Разделителем значений будет перевод строки
# Это нужно для считывания текста целыми строками
IFS='
'
# Флаг режима ввода данных
DATA_INPUT=0
while read
do
echo $REPLY
if [ $DATA_INPUT -eq 0 ]
then
case $REPLY in
HELO*)
# Здесь и далее ответ на команды клиента
echo "250 bash SMTP stub" > $S
;;
DATA*)
# После ввода команды DATA включаем режим ввода данных
echo "354 Start mail input; end with ." > $S
DATA_INPUT=1
;;
QUIT*)
# Окончание сессии
echo "221 2.0.0 Bye" > $S
# Находим запущенные нами процессы tail и netstat и убиваем их
# Без окончания этих процессов следующая сессия не запустится
TAIL_PID=$(ps ax | grep "tail -f $S" | grep -v grep | cut -d' ' -f 1)
NETCAT_PID=$(ps ax | grep "netcat -l -p 25" | grep -v grep | cut -d' ' -f 1)
kill -9 $TAIL_PID $NETCAT_PID
# Выход в главную программу
return
;;
MAIL\ FROM*)
echo "250 2.1.0 OK" > $S
;;
RCPT\ TO*)
echo "250 2.1.0 OK" > $S
;;
*)
echo "502 5.5.2 Error: command not recognized" > $S
;;
esac
else
# Ввод данных пока не встретится "."
case $REPLY in
.*)
echo "250 2.1.0 OK" > $S
DATA_INPUT=0
;;
esac
fi
done
)
}
while true
do
echo "*** Starting session"
start_smtp
done
▶️Информация, которую передает клиент, выводится на экран терминала, в котором запущен скрипт. При желании ее можно перенаправить в файл лога.
🖼️ Ссылка на источник
🔨 bash_help8 883
Курс "Профессия Пентестер" стартует 21 октября!
- Научитесь атаковать сети, WEB-сайты, операционные системы и локальные устройства и проводить внутренний и внешний пентест
- Участвуйте в BugBounty программах или постройте карьеру в сфере информационной безопасности
Полный цикл обучения:
- от освоения Kali Linux и администрирования, до написания эксплойтов и обхода антивирусных решений
- от сетевой разведки до эксплуатации уязвимостей, повышения привилегий и закрепления в сети
Хотите стать пентестером? Присоединяйтесь к нам – защищайте мир от угроз, находя уязвимости и предотвращая кибератаки!
Пишите нам @Codeby_Academy
Узнать подробнее
8 883
⚙️ Ресурс, описывающий самые популярные инструменты DevOps
✔️Здесь описывается Docker, GitHub Actions, k8s, Go, Helm, Prometheus, ArgoCD, Jenkins.
▶️Помимо инструментов, внимание здесь уделяется таким методологиям как GitOps, DevSecOps, описываются базовые команды Linux, основы написания Bash-скриптов и много всего другого.
🖼️ Перейти на сайт
🔨 bash_help
8 883
Cамый простой способ изучить Java — залезть в голову профи
Один из лучших айтишников России учит базе кодинга в Telegram. Даже гуманитарий поймёт, как создавать приложения, сайты, игры и чат-боты.
Достаточно подписаться на «Секреты Java», где каждый день появляются гайды, готовые примеры кода и лучших практик.
И всё это бесплатно — вместо сотен тысяч рублей за курсы. Стартовать в прибыльной профессии с нуля вы сможете гораздо проще!
Теперь обучиться Java может каждый: @java_secrets
8 883
⚙️ Introduction to Bash scripting — бесплатная электронная книга
В некоторых ситуациях проще и быстрее написать костыль на Bash, чем мониторить готовые решения. И как раз для желающих прокачать свои скиллы написания Bash-скриптов и была написана эта книга.
🐙 Перейти на Github
🔨 bash_help
8 883
Лучше, выгоднее, удобнее: нашли отечественный аналог Cloudflare.
Более 10 лет DDoS-Guard защищает бизнес любых масштабов и обеспечивает отказоустойчивость даже при самых интенсивных нагрузках.
Также DDoS Guard:
- Сертификация ФСТЭК
- Фиксированные цены без сюрпризов
- Бесплатный пробный период
- Интуитивно понятный личный кабинет
Проверьте защиту в действии. Подключитесь к бесплатному пробному периоду и убедитесь, что DDoS-Guard — самая надежная защита от DDoS-атак для вашего бизнеса
#реклама
О рекламодателе
8 883
Repost from Видеоуроки IT
🎬 Docker и Docker Compose - Полный Курс Docker Для Начинающих с Нуля
🔴Описание:
00:00 Интро в курс
01:26 Что вошло в курс для начинающих на YouTube
02:43 Что в расширенном курсе на Udemy
04:43 Что нужно для прохождения курса
06:16 Зачем нужен Docker - проблемы разработки и деплоймента
13:22 VM (виртуальная машина) разница с Docker
17:38 Принцип работы Docker
23:22 Docker образ и Docker контейнер
28:19 Слои образа (теория о принципе)
32:49 Начало установки и нюансы о Docker-Desktop
37:24 Установка Docker на Mac
38:56 Установка Docker на Windows
46:32 Установка Docker на Linux
50:40 Проверка работоспособности Docker Desktop
55:15 Базовые команды Docker с образами и контейнерами
1:16:19 Настройка потребления ресурсов Docker-Desktop
1:17:17 Работаем с образом Ubuntu
1:26:35 Интерактивный терминал контейнера Ubuntu
1:27:39 О файловой системе контейнеров
1:32:21 Установка компонентов в контейнер
1:35:33 Dockerfile. Сборка своего образа и установка компонентов
1:45:31 Уменьшаем количество слоев в образе
1:51:46 Потребление ресурсов контейнерами Live stats
1:57:06 Слои контейнера и сборка образа! из контейнера
2:01:20 Образ Python
2:02:34 Упаковка файлов(проекта) в образ (на простом примере)
2:11:06 О буферизации потока вывода
2:15:01 Разница между RUN и CMD
2:15:37 Очистка системы Docker от кеша, ненужных образов и прочего мусора
2:18:43 Установка доп библиотек в образ из requirements.txt или package.json...
2:19:41 Обзор кода (чекаем пару BTC/USDT)))
2:23:03 Правило структуры Dockerfile (правильной очередности слоев)
2:26:20 Образ Nginx
2:31:22 Монтирование портов и ip адреса хоста к контейнеру Docker
2:38:32 Поработаем в Linux терминале контейнера, редактор Nano
2:51:43 Монтирование директорий хоста к контейнеру
3:00:46 Docker Compose (первый пример с Nginx, портами и директориями)
3:10:13 Сборка руками 4 контейнера Mongo + Mongo-Express + Flask + API Checker
3:12:18 Создание сетей
3:28:05 Онлайн график стоимости (смотрим что получилось))
3:30:03 Compose сборка 4 контейнера Mongo + Mongo-Express + Flask + API Checker
▶️ Смотреть на YouTube
🔻Канал: Python Hub Studio
🔴#docker
8 883
⚙️ Команда exit в Bash и коды выхода
✔️Часто при написании сценариев Bash вам необходимо завершить сценарий при выполнении определенного условия или выполнить действие на основе кода выхода команды.
➡️ Статус выхода
▶️Каждая команда оболочки возвращает код выхода, когда она завершается успешно или безуспешно.
▶️По соглашению нулевой код выхода указывает, что команда завершилась успешно, а ненулевое значение означает, что произошла ошибка.
▶️Специальная переменная
$? возвращает статус выхода последней выполненной команды:
date &> /dev/null
echo $?
▶️Команда date завершена успешно, код выхода равен 0
Если вы попытаетесь запустить ls в несуществующем каталоге, код выхода будет отличным от нуля:
ls /nonexisting_dir &> /dev/null
echo $?
2▶️Код состояния можно использовать для выяснения причины сбоя команды. На странице руководства каждой команды содержится информация о кодах выхода. ▶️При выполнении многокомандного конвейера статус выхода конвейера соответствует состоянию последней команды:
sudo tcpdump -n -l | tee file.out
echo $?
▶️В приведенном выше примере echo $? напечатает код выхода команды tee .
➡️ Команда exit
Команда exit закрывает оболочку со статусом N Он имеет следующий синтаксис:
exit N
▶️Если N не задано, код состояния выхода — это код последней выполненной команды.
▶️При использовании в сценариях оболочки значение, указанное в качестве аргумента команды exit возвращается оболочке как код выхода.
➡️ Примеры
▶️Статус выхода команд может использоваться в условных командах, таких как if . В следующем примере grep завершит работу с нулем (что означает истину в сценариях оболочки), если «строка поиска» найдена в filename :
if grep -q "search-string" filename then
echo "String found."
else
echo "String not found."
fi
▶️При запуске списка команд, разделенных && (И) или || (ИЛИ), статус выхода команды определяет, будет ли выполнена следующая команда в списке. Здесь команда mkdir будет выполнена, только если cd вернет ноль:
cd /opt/code && mkdir project
▶️Если сценарий завершается exit без указания параметра, код выхода из сценария — это код последней команды, выполненной в сценарии.
#!/bin/bash
echo "doing stuff..."
exit
▶️Использование только exit — это то же самое, что и exit $? или пропуская exit .
▶️Вот пример, показывающий, как завершить сценарий, если он запущен пользователем без полномочий root:
#!/bin/bash
if [[ "$(whoami)" != root ]]; then
echo "Only user root can run this script."
exit 1
fi
echo "doing stuff..."
exit 0
▶️Если вы запустите сценарий как root, код выхода будет нулевым. В противном случае скрипт выйдет со статусом 1 .
➡️ Выводы
▶️Каждая команда оболочки возвращает код выхода при завершении. Команда exit используется для выхода из оболочки с заданным статусом.
🖼️ Ссылка на источник
🔨 bash_help8 883
Есть ли жизнь DevOps после 40? 🚩
Признайтесь, кто тоже боится войти в новую профессию, потому что думает, что возраст — помеха?
В Слёрме знают, как избавиться от этого страха.
До 6 октября приглашаем вас присоединиться к курсу-профессии «DevOps Upgrade» с карьерной поддержкой.
Внутри:
→ 275 часов интенсивной практики
→ видеолекции и живые встречи с экспертами курса
→ 2 сертификации и 1 большой финальный проект (можно добавить в портфолио!)
→ диплом государственного образца
🔗 карьерная консультация от наставника
🔗 подготовка к собеседованию
🔗 рекомендательное письмо
Вы сможете не только освоить новую профессию, но и подготовиться к старту в ней и выгодно подсветить своё резюме.
Переходите на сайт, выбирайте тариф «Комфорт Карьера», и начните учиться уже сегодня 🏃♂️
8 883
⚙️ Руководство по использованию команды ulimit в Linux с примерами
✔️Команда
ulimit в Linux позволяет ограничивать ресурсы, доступные для оболочки и её дочерних процессов. Эти ограничения включают максимальное количество открытых файлов, максимальный объём виртуальной памяти, размер файла дампа памяти и многое другое.
▶️Команда ulimit является важным инструментом для управления доступными ресурсами, предотвращая ситуации, когда один процесс может заблокировать все ресурсы системы. Она также помогает поддерживать стабильность системы, ограничивая ресурсы для каждого пользователя и процесса.
▶️В этой статье мы рассмотрим команду ulimit и приведём примеры её использования. Также будут рассмотрены практические аспекты её применения.
➡️ Виды ограничений
Ограничения, управляемые командой ulimit, можно разделить на два типа: жёсткие и мягкие ограничения. Рассмотрим их подробнее.
▶️Мягкие ограничения
Мягкие ограничения — это значения, которые можно изменить в пределах жёстких ограничений. Они позволяют временно менять пределы ресурсов для конкретного процесса.
▶️Жёсткие ограничения
Жёсткие ограничения — это максимальные значения ресурсов, которые можно установить для пользователя или процесса. Эти ограничения могут быть изменены только суперпользователем. Жёсткие ограничения задают строгие пределы для использования ресурсов, предотвращая злоупотребление ими.
➡️ Содержание статьи:
▶️Использование
▶️▶️Установка предела размера файла
▶️▶️Увеличение числа открытых файловых дескрипторов
▶️▶️Ограничение времени работы процессора
▶️Практическое применение
▶️▶️Предотвращение перегрузки системы
▶️▶️Улучшение безопасности
▶️▶️Разработка и тестирование
▶️▶️Оптимизация производительности системы
▶️Сохранение ограничений
▶️Заключение
🖼️ Дочитать статью
🔨 bash_help8 883
Развертывание кластера Kubernetes — долгая, сложная и рутинная работа
А что если мы скажем, что это можно сделать за несколько кликов 🤯
8 октября Cloud․ru проведет бесплатный вебинар и в прямом эфире покажет, как быстро и просто развернуть приложение в кластере Kubernetes, при этом сэкономить на инфраструктуре. Ну и в целом эксперт расскажет про нюансы управления кластером и ответит на вопросы.
Будет интересно разработчикам, DevOps-инженерам, архитекторам облачных решений и всем, кто работает с Kubernetes.
➡️ Регистрируйтесь на сайте
8 883
⚙️ Несколько способов ускорить bash-скрипты
✔️Думаю, не сделаю открытия, если скажу, что в принципе bash-скрипты штука довольно медленная. Но это обычно не критично, потому что все-таки главная задача bash-скриптов — это автоматизация тех действий, которые выполняются руками. Так что по сравнению с ручным выполнением скорость просто фантастическая. Тем не менее, бывает необходимо ускорить скрипты, если обрабатываются какие-то большие объемы данных.
➡️ Скорость выполнения скриптов
Есть определенные факторы, которые влияют на скорость выполнения скриптов. К ним можно отнести:
▶️Использование внешних команд
▶️Использование излишне сложных или просто неоптимальных регулярных выражений
▶️Вывод в консоль каких-то данных
▶️Использование лишних команд
▶️Использование круглых или фигурных скобок
▶️и т.д.
➡️ И, соответственно, хороший скрипт
▶️Не использует специфические программы, которые есть не везде (требуют установки дополнительных пакетов)
▶️Использует минимум внешних команд
▶️Использует оптимизированные регулярные выражения (которые, как ни печально, многие вообще не используют), например, с минимальным использование захватывающих квантификаторов. Регулярки — это вообще отдельная интересная тема, по поводу которой могу порекомендовать книгу Джеффри Фридла «Регулярные выражения» (если ваш английский позволяет, то лучше в оригинале) и много практики.
▶️Не использует переменные для хранения данных, когда можно использовать пайп и запускать два процесса параллельно вместо последовательного запуска
Кроме скорости, естественно, есть еще такой фактор как совместимость. Если вы уверены, что в других оболочках скрипт выполняться не будет, или будет работать медленно, лучше откажитесь от совместимости в пользу скорости. Какой смысл писать скрипты, которые будут в 99% случаев выполняться в bash, но работать будут в 100% случаев медленно? Тем более что bash есть буквально везде, даже на смартфонах и роутерах. В наше время написание совместимых скриптов — это чаще вопрос предпочтений, чем реальной необходимости. Не очень приятного бывает осознавать, что скрипт может работать под разными оболочками, но работает 100% в баше, и, в связи с отсутствием «заточки» под баш, работает он заметно медленнее, чем мог бы.
➡️ Поэтому давайте рассмотрим некоторые моменты, касающиеся скорости скриптов на примерах
▶️Использование внешних команд
▶️Использование регулярных выражений
▶️Вывод в консоль данных
▶️Использование лишних команд
🖼️ Дочитать статью
🔨 bash_help
8 883
Хотите научиться программировать на одном из самых мощных и востребованных языков? Запишитесь на бесплатный мини-курс Skillbox по разработке на C++ и создайте своё первое приложение всего за 5 дней: https://epic.st/rkQ-iw?erid=2VtzqwQRW48
На мини-курсе вас ждут:
— Погружение в C++: даже если вы никогда не занимались программированием, всё равно поймёте основы языка и напишете своё первое финансовое приложение
— Доступ к материалам навсегда: смотрите видео в удобное время и повторяйте пройденный материал, когда потребуется
— Поддержка эксперта: общение со спикером и разбор ваших практических работ на вебинаре
Запишитесь на мини-курс и получите 5 чек-листов разработчика на C++, а также год бесплатного изучения английского языка!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
