reload_flag=""
if [[ -n "${DEBUG}" ]]; then
reload_flag="--reload"
fi
if [[ -n "${WORKER_COUNT}" ]]; then
workers=${WORKER_COUNT}
else
workers=2
fi
gunicorn --workers ${workers} \
--bind 0.0.0.0:8000 \
${reload_flag} main.wsgi
Писали такие конструкции чтобы проверить наличие флага и сформировать команду правильно?
На самом деле можно сделать тоже самое проще. Для этого используются операторы условной подстановки, доступные в оболочках семейства POSIX.
:- для установки значений по умолчанию
${WORKER_COUNT:-2}
Если переменная не объявлена, то будет дефолтное значение 2.
:+ подставляет указанный текст, если переменная не пуста
${DEBUG:+--reload}
Если что-то есть в переменной то распечатается текст после символа +, в противном случае - ничего. Удобно для опциональных флагов, как в нашем примере.
Итого наш скрипт может выглядеть так:
gunicorn --workers ${WORKER_COUNT:-2} \
--bind 0.0.0.0:8000 \
${DEBUG:+--reload} main.wsgi
Есть еще два оператора.
:= не только подставить дефолтное значение, но и присвоить его переменной, если она пуста
# никаких переменных еще нет
VAL1=${VAL2:=hello}
# теперь доступны обе
echo $VAL1 $VAL2
# hello hello
:? остановить выполнение с ошибкой, если переменной нет.
echo ${MISS:?is required}
bash: MISS: is required
Код выхода будет 1.
#tricks#linux
👩💻 Книга: Linux From Scratch.
• В книге "Linux From Scratch" приведены объяснения и инструкции, нужные для того, чтобы спроектировать и собрать свою собственную систему. При этом вы вправе отклониться от инструкций в соответствии с собственными замыслами, что, в частности, является важной частью данного проекта. Управление остается за вами, автор просто протягиваем вам руку помощи с тем, чтобы вы начали на свое собственное турне.
• Специально собранные системы Linux будут полезны не только для того, чтобы удовлетворить конкретные требования пользователей, но также служат идеальным средством обучения, позволяющим программистам и системным администраторам повысить свои (уже существующие) навыки работы с Linux.
➡️Оригинальная версия книги [Eng].
➡️Перевод книги [RU].
• Книга состоит из следующих частей:
1️⃣ Часть — Введение: приводится несколько важных замечаний, касающихся того, как приступить к установке системы LFS. Здесь же также приведена мета-информация о книге.
2️⃣Часть — Подготовка к сборке: описывается, как подготовиться к процессу сборки — создать раздел, загрузить пакеты и откомпилировать временный набор инструментальных средств.
3️⃣Часть — Сборка системы LFS: читатель пройдет через этапы сборки системы LFS — один за другим откомпилирует и установит все пакеты, настроит скрипты загрузки и установит ядро. Результирующая система Linux будет основой, на которой можно собирать и устанавливать нужные вам программы. В конце книги для удобства использования приводятся списки всех программ, библиотек и важных файлов, которые были установлены.
#Linux
👩💻 Администрирование Linux.
• Нашел очень полезную подборку из 27 репозиториев на GitHub. Тут вам и коллекция полезных скриптов для автоматизации различных задач, и настройка безопасности, и даже различные задачки для повышения скила. В общем и целом, много крутых и полезных ресурсов, обязательно ознакомьтесь:
➡️https://github.com/topics/linux-administration
#Linux
👩💻 Test drive Linux distros online!
• Ещё один ресурс, где можно прямо в браузере протестировать работу разных дистрибутивов Linux:
➡️https://distrosea.com/
#Linux
👩💻 Траблшутинг Linux. Основные команды, примеры.
• Основные команды для быстрого поиска проблем (траблшутинга) сервера или виртуальной машины на Linux (Ubuntu, Debian, CentOS, Astra). Как диагностировать проблемы с дисками, процессами, оперативной памятью, сетью. Как смотреть логи в Linux.
- Мониторинг;
- Место на дисках;
- Состояние дисков;
- Нагрузка на диски;
- Процессор;
- Оперативная память;
- Процессы;
- Сеть;
- Логи.
#Linux
🥇 Understanding process thread priorities in Linux.
• Интересная статья о приоритетах в Linux: какие инструменты можно использовать для просмотра информации по приоритетам и о работе ядра с приоритетами.
➡️https://blogs.oracle.com/linux/post/task-priority
#Linux
👩💻 Understanding process thread priorities in Linux.
• Интересная статья о приоритетах процессов в Linux, о работе ядра c приоритетами, и о том какие инструменты можно использовать для просмотра информации о приоритетах:
➡️https://blogs.oracle.com/linux/post/task-priority
#Linux
👩💻 FHS (Filesystem Hierarchy Standard) — стандарт иерархии файловой системы.
• Раньше я очень любил простоту Windows. A:\ для флоппика, C:\ для системы, D:\ для дистрибутивов игр, фото и видео, E:\ для CD-ROM. Всё просто!
• А теперь обратите внимание на gif к этому посту, так наглядно показан минимальный минимум, который встретится Вам в большинстве UNIX-подобных систем.
• Если нужно подробное описание, то информация есть на вики: https://ru.wikipedia.org/wiki/FHS
#Linux
📚 Пошаговое руководство по внедрению эксплойта в ядро Linux.
• Сразу хочу обозначить, что данное руководство было опубликовано в 2018 году, но до сих пор является весьма ценным и будет очень полезным для новичков.
• В этом руководстве детально рассмотрен процесс по разработке и внедрению эксплойта в ядро Linux на основе CVE-описания. Эта информация в основном ориентирована на начинающих разработчиков, поскольку в большинстве статей, посвященных разработке эксплойтов уровня ядра, подразумевается, что читатель уже в теме. Мы же начнем с самых азов и рассмотрим основные структуры данных и важные участки кода ядра. После ознакомления со всем циклом подразумевается, что вы сможете досконально разобраться с эксплойтом, включая то, как влияет каждая строка кода на ядро.
• Рассматривайте это руководство как путеводитель по ядру в Linux, сопровождаемый практическим примером. Написание эксплойтов дает хорошее понимание схемы функционирования ядра. Кроме того, вы рассмотрите различные отладочные техники, инструменты, наиболее распространенные подводные камни и методы решения возникающих проблем.
#Linux