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 namespaces и seccomp.
• Использование Linux - namespace и seccomp — это не просто защита, а мощный щит для предотвращения атак. Namespace изолирует процессы, а seccomp блокирует доступ к более чем 200 системным вызовам, из которых более 50 считаются высокорисковыми для безопасности.
• По сути, это как строить защиту для вашего дома: namespace — это стены, разделяющие различные комнаты, а seccomp — это система безопасности, которая блокирует нежелательные действия, даже если злоумышленник каким-то образом окажется за дверью. Как раз об этом и поговорим: https://habr.com/ru/post/866942/
#ИБ#Linux#namespaces#seccomp
A new home for kernel.org
Akamai 宣布将为 Linux 内核开发提供免费的基础设施支持,托管 kernel.org 代码仓库。Linux 内核规模庞大,包含约 2800 万行代码。自 2005 年以来,已有超过 13500 名来自 1300 多家公司的开发者参与贡献。Akamai 将为全球开发者提供稳定的 Git 环境支持,确保他们能快速获取内核源代码。
原文链接:https://lwn.net/Articles/1015555/
#Linux#开源#软件开发#基础设施
#AIGC
Read more
[$] Compact formats for debugging—and more
在2025年东京Linux Plumbers大会上,Stephen Brennan发表了一场关于调试信息格式的演讲。他探讨了当前包含调试所需符号等信息的debuginfo格式及其替代方案。他指出,debuginfo文件通常体积庞大,且名称中的“debug”一词有时会让用户感到不安。通过重新思考debuginfo及其相关工具的设计,他希望自由软件开发者能够“为我们已在使用的工具增添新的、有趣的功能,或者构建出全新的有趣工具”。
原文链接:https://lwn.net/Articles/1057295/
#Linux#调试#软件开发#工具
#AIGC
Read more