Linux Skill - Освой Linux c нуля до DevOps
11.2K subscribers
68 photos
103 videos
501 links
Освой Linux c нуля до DevOps
Подробный гайд по Linux и море других уроков для системных администраторов

📩 По всем вопросам: @chorapov

РКН https://vk.cc/cMUwm4
Download Telegram
🔍 Как рекурсивно найти все файлы в текущей и поддиректориях с использованием шаблонов?

Если ты ищешь способ найти все файлы, соответствующие определенному шаблону, в текущей директории и всех поддиректориях, используй команду find:


find . -name "foo*"


Объяснение:
- find требует начальную точку поиска, поэтому . (точка) указывает на текущую директорию.
- "foo*" — это шаблон, который указывает find искать все файлы, начинающиеся с "foo".

Дополнительные возможности:
- Для поиска без учета регистра используй:

find . -iname "foo*"

- Если ты не хочешь получать уведомления об ошибках доступа к директориям, используй:

find . -name "foo*" 2>/dev/null

- Чтобы искать только файлы, исключая директории, добавь -type f:

find . -name "foo*" -type f


Советы:
- Обязательно используй кавычки вокруг шаблона, чтобы избежать его расширения оболочкой перед передачей в find.
- Если у тебя есть символические ссылки, и ты хочешь их обрабатывать, добавь опцию -L.

Ветка: https://stackoverflow.com/questions/5905054/how-can-i-recursively-find-all-files-in-current-and-subfolders-based-on-wildcard

📩 Завтра: Darling: Запускай MacOS приложения на Linux как профи!
Включи 🔔 чтобы не пропустить!
________________

Дополнительный материал:
🧠 - Linux Deep Dive: Разбираемся с UID и группами
🧠 - Как использовать команду basename для упрощения ваших скриптов Bash
🧠 - От простого до грандиозного: Путешествие Kubernetes в мире контейнеризации

tags: #linux #find #search #tips #stackoverflow @LinuxSkill
👍19🔥2
🎨 Как изменить цвет вывода команды echo в Linux?

Хочешь добавить немного цвета в свои скрипты? Используй ANSI escape-коды, чтобы изменить цвет текста в терминале! Вот как это сделать:

Коды цветов:
- Черный: 0;30, Темно-серый: 1;30
- Красный: 0;31, Светло-красный: 1;31
- Зеленый: 0;32, Светло-зеленый: 1;32
- Коричневый/Оранжевый: 0;33, Желтый: 1;33
- Синий: 0;34, Светло-синий: 1;34
- Фиолетовый: 0;35, Светло-фиолетовый: 1;35
- Голубой: 0;36, Светло-голубой: 1;36
- Светло-серый: 0;37, Белый: 1;37

Пример использования:

RED='\033[0;31m'
NC='\033[0m' # Без цвета
printf "I ${RED}love${NC} Stack Overflow\n"


Совет: Если используешь echo, добавь флаг -e для обработки escape-последовательностей:

echo -e "I ${RED}love${NC} Stack Overflow"


Замечания:
- Используй кавычки, чтобы избежать расширения шаблонов.
- На MacOSX вместо \e используй \x1B.
- Цвета зависят от конфигурации терминала, так что результат может различаться.

Теперь ты знаешь, как добавить немного цвета в свои скрипты! 🎨

Ветка: https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux

📩 Завтра: Неожиданные секреты Linux: 12 утилит, которые спасут твой сервер!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Освежаем Linux Skills: Как удалить особые режимы разрешений?
🧠 - Станьте мастером правописания в Linux с помощью команды Aspell
🧠 - Путь дистрибутивов на базе Gentoo от Calculate Linux до Sabayon

@LinuxSkill #echo #stackoverflow
👍8🔥7
🛠️ Как удалить экспортированную переменную окружения в Linux?

Если тебе нужно удалить экспортированную переменную окружения, команда unset — это то, что тебе нужно:

unset GNUPLOT_DRIVER_DIR


Важно знать:
- Эта команда удаляет переменную только для текущей сессии терминала. При открытии нового окна терминала переменные загружаются из таких файлов, как ~/.bashrc или ~/.profile.
- Если переменная автоматически устанавливается при каждом запуске терминала, попробуй найти её в скрытых файлах домашней директории. Используй команду:
  grep -r <имя_переменной> ~

Это может занять время, если у тебя много файлов.

Как сохранить значение переменной, но убрать экспорт:
- В bash можно использовать:
typescript
  declare +x MYVAR

или

  export -n MYVAR


Удаление переменной в разных сессиях:
- Нет команды, которая бы удалила переменную во всех существующих сессиях. Лучше найти файл инициализации, где она устанавливается, и отредактировать его, чтобы переменная не устанавливалась в будущих сессиях.

Ветка: https://stackoverflow.com/questions/6877727/how-do-i-delete-an-exported-environment-variable

📩 Завтра: Твой незаменимый помощник: Скрипт для мониторинга Linux!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Улучшаем Linux Skills: Мастерство символического представления разрешений с chmod
🧠 - Знаете ли вы, как узнать архитектуру вашей машины в Linux
🧠 - Открытие Ansible: Как простой инструмент стал гигантом управления конфигурациями

#stackoverflow @LinuxSkill #Linux #EnvironmentVariables #Bash #Tips #Automation
👍13
🔍 Как найти различия между двумя деревьями каталогов в Linux?

Ты когда-нибудь задумывался, как быстро сравнить содержимое двух директорий и выявить различия? Сегодня мы расскажем, как это сделать с помощью команды diff в Linux.

Чтобы сравнить два дерева каталогов и найти различия в содержимом файлов, используй команду diff с флагами -qr:

diff -qr dir1/ dir2/


- -q или --brief — выводит только информацию о различиях, без детального сравнения.
- -r или --recursive — рекурсивно обходит все подкаталоги.

Если ты хочешь увидеть различия для файлов, которые могут отсутствовать в одной из директорий, добавь флаг -N:

diff -qrN dir1/ dir2/


Используя эти команды, ты сможешь легко и быстро выявить различия между двумя директориями, что особенно полезно при управлении версиями и контроле изменений. Попробуй сам и убедись, насколько это удобно!

🌳 Ветка: https://stackoverflow.com/questions/4997693/given-two-directory-trees-how-can-i-find-out-which-files-differ-by-content

📩 Завтра: 18 команд которые должен знать каждый линуксоид!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Мастерство использования команды chown для смены владельца файлов и каталогов
🧠 - Станьте Мастером Календаря в Linux с Cal и NCal
🧠 - Станьте Мастером Управления Пользователями в Linux

#stackoverflow @LinuxSkill #Linux #Diff #DirectoryComparison #SysAdmin #DevOps
👍23
⏱️ Как измерить время выполнения программы в Linux?

Хочешь узнать, сколько времени занимает выполнение твоих скриптов или команд в Linux? Сегодня мы расскажем, как использовать встроенную команду time для этого.

Основная информация:

Команда time позволяет измерить реальное время, затраченное на выполнение команды, а также время работы процессора. Вот как это сделать:

1. Использование команды time:

Просто добавь time перед командой, которую хочешь измерить. Например:

   time sleep 2


Вывод будет примерно таким:

   real    0m2.009s
user 0m0.000s
sys 0m0.004s


- real — общее время выполнения.
- user — время, затраченное на выполнение пользовательского кода.
- sys — время, затраченное на выполнение системного кода.

2. Измерение времени для нескольких команд:

Если нужно измерить время выполнения нескольких команд, используй группу команд:

   time { command1; command2; }


Используя команду time, ты можешь легко измерять производительность своих скриптов и оптимизировать их. Попробуй сам и убедись, насколько это полезно!

🌳 Ветка: https://stackoverflow.com/questions/385408/get-program-execution-time-in-the-shell

📩 Завтра: Как не стать жертвой сниффинга паролей на Linux
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Открываем Мир b2-tools
🧠 - Открываем Все Тайны Команды Cat
🧠 - Разгадываем Загадки с Diff3

#stackoverflow @LinuxSkill #Linux #TimeCommand #Performance #SysAdmin #DevOps
👍14
🛠️ Что означает $@ в shell скрипте?

Если ты когда-либо задавался вопросом, что такое $@ в shell скрипте, то сегодня мы разберем эту загадку и покажем, как использовать его для передачи параметров.

$@ представляет собой все параметры, переданные скрипту. Например, если ты вызовешь скрипт так:

./someScript.sh foo bar


то $@ будет равно foo bar.

Когда внутри someScript.sh ты используешь:

umbrella_corp_options "$@"


каждый параметр будет передан в umbrella_corp_options в двойных кавычках. Это позволяет передавать параметры с пробелами, как единое целое.

Пример использования:

Если ты вызовешь:

./someScript.sh foo bar "boo far"


то $@ в двойных кавычках будет содержать три аргумента: "foo", "bar" и "boo far".

Использование $@ в shell скриптах позволяет легко и безопасно передавать параметры, включая те, которые содержат пробелы. Попробуй сам и убедись, насколько это удобно!

🌳 Ветка: https://stackoverflow.com/questions/9994295/what-does-mean-in-a-shell-script

📩 Завтра: Защити свой сервер: Настройка безопасности SSH на Linux
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Текстовый редактор Nano — как работать с файлами на минималках и не страдать!
🧠 - Почувствуй себя цифровым рентгенологом — откроем файлы насквозь с Od!
🧠 - Давно занимался спортом? Нет? Ну вот, пора хотя бы пароли сменить!

#stackoverflow @LinuxSkill #Linux #ShellScripting #SysAdmin #DevOps
👍18🔥2
🧠 Нужно ли ставить кавычки вокруг переменных в shell-скриптах?

Привет, повелитель терминала! Если ты в скриптах пишешь $var без кавычек — скорее всего, ты (пока что) просто везучий.
Давай разберёмся, когда и зачем переменные в shell-скриптах нужно оборачивать в кавычки.

### Общее правило:
> Оборачивай переменные в двойные кавычки, если не хочешь сюрпризов от пробелов, пустых значений и спецсимволов.

---

### Когда кавычки обязательны:
1. Значение может быть пустым:
   [ "$var" = "value" ]

2. Есть пробелы:
   xdg-open "$URL"

3. В переменной спецсимволы (*, &, ?):
   wget "$link"


---

### Пример бага:
file="My documents/report.pdf"
rm $file # Попытка удалить два файла: 'My' и 'documents/report.pdf'
rm "$file" # Удаляется нужный файл


---

### Когда кавычки можно опустить:
- $?, $#, $0 — безопасны без кавычек.
- Внутри арифметических или логических выражений:
   if [ "$?" -eq 0 ]; then ...


Вывод:
Используй кавычки по умолчанию. Это просто и защищает от десятков потенциальных багов.

🌳 Ветка: https://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-shell-variable

📩 Завтра: Секреты Bash: Как тестировать порты без curl и wget!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Откройте для себя мир Управления Службами в Linux с нашей серией статей
🧠 - Контейнер в контейнере? Да это как матрёшка для айтишников: открываешь, а там ещё больше проблем… но зато все свои!
🧠 - Секретная Команда nsenter! Управляй Контейнерами как Хакер

#stackoverflow @LinuxSkill #Linux #ShellScripting #Quotes #SysAdmin #DevOps
👍14
🧯 Как удалить конкретные правила из iptables (а не всё подряд)?

Привет, линуксоид! Бывало такое: правила в iptables работают как часы, но внезапно нужно откатить одно-два, не трогая всё остальное. Ниже — короткий гайд, как это сделать аккуратно и по-взрослому.

Способ 1. Удалить правило по содержимому
Повтори ту же команду, но с -D вместо -A:
iptables -D INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

💡 Работает, только если правило совпадает дословно.

🧩 Способ 2. Удалить по номеру
Сначала покажи номера правил:
iptables -L INPUT --line-numbers

Удаление:
iptables -D INPUT 3

Если правило в NAT:
iptables -t nat -L PREROUTING --line-numbers
iptables -t nat -D PREROUTING 1


🛠 Способ 3. Комментарии и iptables-restore
Добавляешь правило с комментарием:
iptables -A INPUT -s 1.2.3.4 -j DROP -m comment --comment "ban_temp"

Потом удаляешь всё с этим тегом:
iptables-save | grep -v "ban_temp" | iptables-restore


🧼 Способ 4. Через iptables -S
Показать все правила:
iptables -S

Удалить нужное вручную (заменив -A на -D):
iptables -D INPUT -p tcp --dport 443 -j ACCEPT


⚠️ Не забудь:
- При удалении по номеру порядок важен: после удаления строки остальные смещаются.
- Не используй iptables -F, если не хочешь снести всё подчистую.

🌳 Ветка: https://stackoverflow.com/questions/10197405/how-can-i-remove-specific-rules-from-iptables

📩 Завтра: iptables: доступ к порту 8000 только с одного IP
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Эй, ты в курсе, что с Grafana можно раз и навсегда забыть о хаосе в мониторинге серверов?
🧠 - Секретная связка Angie и Grafana для тотального контроля над серверами
🧠 - Неожиданно закончилась память? 3 секрета команды du -h

#stackoverflow @LinuxSkill #iptables #Linux #сетевоеадминистрирование #firewall #DevOps #SysAdmin #безопасность
👍18🔥2
🔐 iptables: доступ к порту 8000 только с одного IP

Привет, хранитель сетей! Если ты хочешь открыть доступ к какому-либо сервису (например, веб-интерфейсу на порту 8000) только для одного IP, не трогая весь остальной трафик — вот как это делается через iptables.

🔧 Пример: разрешить доступ только для 1.2.3.4

iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP

Так ты явно разрешаешь доступ для IP 1.2.3.4, а все остальные — отсекаешь.

💡 Альтернатива: блокировать всех, кроме одного IP
iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP

Один простой вариант — одна строка, эффект тот же.

📌 Несколько полезных замечаний:
- Для диапазона IP используй:
-s 1.2.3.0/24
- Чтобы снять правило, замени -A на -D (или используй iptables -S и удаляй по номерам).
- Не забудь сохранить конфигурацию, если не хочешь потерять правила после перезагрузки:
  iptables-save > /etc/iptables.rules

🌳 Ветка: https://stackoverflow.com/questions/7423309/iptables-block-access-to-port-8000-except-from-ip-address

📩 Завтра: Как управлять iptables на лету — без sudo, без потерь
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Не трать время на конфиги: как упростить работу с WireGuard
🧠 - Неожиданный способ взломать систему: что такое бинарный анализ в Linux?

#stackoverflow @LinuxSkill #iptables #Linux #firewall #порт #безопасность #SysAdmin #DevOps
👍14👀1
🧠 Как управлять iptables на лету — без sudo, без потерь

Привет, сетевой волшебник! Если ты хоть раз пытался автоматически обновлять правила iptables из приложения или скрипта — ты знаешь, насколько это боль.
Сегодня разберём, как это делать программно, безопасно и эффективно — даже без API.

🤯 Проблема: у iptables нет API

- libiptc не предназначена для использования — она нестабильна и может быть удалена в будущем.
- Прямого, документированного API в C, Python, Rust и т.д. не существует.

📌 Официальный ответ от Netfilter:
> “Нет, API не предусмотрен. Используйте system() или iptables-restore.”
Источник: Netfilter FAQ

Что работает на практике:

#1. iptables-restore (атомарная загрузка правил)
Можно применять *весь ruleset сразу*, не теряя соединений:

iptables-restore < my_ruleset.conf


✔️ Безопасно: правила применяются при COMMIT, в один вызов ядра
✔️ Работает из любой программы через stdin


#2. ipset — для добавления IP без пересборки

ipset create allowlist hash:ip
ipset add allowlist 1.2.3.4
iptables -A INPUT -m set --match-set allowlist src -j ACCEPT


✔️ Отлично подходит для динамических списков
✔️ Есть поддержка timeout и swap
✔️ Работает быстро и без потерь


#3. rfw — REST API для iptables (open source)

Позволяет управлять правилами через HTTP-запросы:

PUT /drop/input/eth0/11.22.33.44


👉 Проект: https://github.com/gluczywo/rfw
✔️ Поддерживает JSON, GET, PUT, DELETE, сериализацию
✔️ Работает на localhost без SSL
✔️ Подходит для распределённых систем


#4. python-iptables

Обёртка над libiptc (но будь осторожен):

🔗 https://github.com/ldx/python-iptables
✔️ Удобен для скриптов
Требует осторожности при работе с низкоуровневым API

🛑 Что не делать:

- Не пиши правила через iptables -A в цикле
- Не используй libiptc напрямую в проде
- Не забывай про iptables-save как бэкап перед внесением правок

🌳 Ветка: https://stackoverflow.com/questions/109553/how-can-i-programmatically-manage-iptables-rules-on-the-fly

📩 Завтра: Вопрос №17 из теста Linux Essentials Certification
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Настрой cron за 5 минут и забудь о ручной работе навсегда!
🧠 - Ты больше никогда не запутаешься в systemd: разбор по шагам!
🧠 - 10 секретов команды ping, которые знают только сетевые гуру

#stackoverflow @LinuxSkill #iptables #ipset #Linux #SysAdmin #DevOps #firewall #rfw #сетибезопасность
👍14
🚀 Как работает export в bash и когда он реально нужен?

Привет, архитектор переменных и властелин скриптов! Задумывался, зачем вообще нужен export в bash и что он делает с переменными? Сегодня разложим по полочкам — коротко, чётко и с пользой!

🧠 Что делает export

Когда ты пишешь:
export MY_VAR=value

ты говоришь bash: “Эй, сделай эту переменную доступной для всех дочерних процессов.”
Например, твой скрипт вызывает python, curl, node — они смогут использовать MY_VAR.

🤔 А если без export?

Вот так:
MY_VAR=value

Переменная будет доступна только внутри текущего shell, но не в дочерних процессах.
Однако есть лайфхак:

MY_VAR=hello node script.js

Так переменная временно экспортируется только для выполнения node script.js. Удобно? Да!

⚠️ Важное ограничение
Экспорт работает вниз по процессу, но не вверх.
Если ты экспортируешь переменную в скрипте, родительский терминал её не увидит.

🛠 Вывод
Хочешь, чтобы переменная работала в дочерних процессах? Используй export.
Пишешь скрипт с вызовом других программ? Без export будет больно.
Но если переменная нужна только внутри текущего скрипта — не трать лишние байты.


🌳 Ветка: https://stackoverflow.com/questions/1158091/defining-a-variable-with-or-without-export

📩 Завтра: Прокачай свой namei: секретная опция для идеального вывода!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Поднимем отказоустойчивое хранилище в Proxmox VE с Ceph
🧠 - Отключи ненужные конфиги в Apache за пару команд!
🧠 - Контролируй трафик в реальном времени! Три утилиты для мониторинга сети в Linux

#stackoverflow @LinuxSkill #Linux #ShellScripting #Export #SysAdmin #DevOps
👍19🔥1
💥 Почему set -e в bash может сломать тебе всё!

Привет, терминальный заклинатель! Кажется, ты добавил set -e в свой bash-скрипт и думал, что теперь ошибки сами себя поймают? А потом скрипт резко перестал доходить до конца?.. Давай разберемся, в чём подвох.

🤔 Что вообще делает set -e?

set -e говорит интерпретатору bash:
> "Если любая команда завершится ошибкой, — останови скрипт немедленно".

Это полезно для CI/CD, бэкапов и всего, что не прощает ошибок. Но...

⚠️ Проблема: поведение set -e — неочевидно!

Вот типичный случай:

#!/bin/bash
set -e
false
echo "Я не выполнюсь!"


Скрипт завершится после false, и echo даже не запустится. Всё логично.
Но теперь внимание:

#!/bin/bash
set -e
if false; then
echo "Упс"
fi
echo "А вот и я!"


🎉 Здесь echo выполнится! Потому что ошибки внутри if, while, until и &&/|| — игнорируются!

🔍 Когда set -e может навредить?

Если ты используешь команды вроде:

grep "что-то" файл.txt || echo "не найдено"


Скрипт продолжит работу, даже если grep вернёт ненулевой код. Но теперь представь, что ты этого не знал… 😬

Как правильно использовать set -e?
1. Сначала — пойми, где оно действительно нужно (например, в CI/CD, деплое, тестах).
2. Используй его в отдельных функциях, а не во всём скрипте сразу.
3. Если обрабатываешь ошибку вручную — используй ||, if, trap, set +e.

👨‍💻 Итог:
set -e — не волшебная палочка. Это строгий сторож, который иногда рубит по-живому. Используй с умом, тестируй поведение и знай, где он тебя может подставить.

🌳 Ветка: https://stackoverflow.com/questions/19622198/what-does-set-e-mean-in-a-bash-script

📩 Завтра: BTRFS: Продвинутые техники для настоящих гуру!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 -Настрой мониторинг сети в реальном времени с Prometheus и Grafana
🧠 - b2-tools — простое и быстрое резервное копирование в облако
🧠 - Ты не знал, что cat умеет это! Лайфхаки для работы с файлами в Linux

#stackoverflow @LinuxSkill #bash #linux #скрипты #автоматизация #devops #linuxskill #сетевые_лайфхаки #shell #ci_cd #ошибки
👍18👀1
🤔 Как запросить ввод Yes/No/Cancel в shell скрипте?

Хочешь сделать свои скрипты более интерактивными? Узнай, как легко запросить ввод от пользователя в Linux с помощью команд read и select.

Основная информация:

1. Использование команды read:

Команда read позволяет запрашивать ввод от пользователя. Вот пример, как это сделать:

   while true; do
read -p "Do you wish to install this program? " yn
case $yn in
[Yy]* ) make install; break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done


Этот скрипт будет повторять запрос, пока пользователь не введет "yes" или "no".

2. Использование команды select:

select упрощает выбор, автоматически отображая доступные варианты:

   echo "Do you wish to install this program?"
select yn in "Yes" "No"; do
case $yn in
Yes ) make install; break;;
No ) exit;;
esac
done


Здесь пользователь выбирает номер, соответствующий его выбору.

3. Локализация ввода:

Для поддержки разных языков можно использовать locale:

   set -- $(locale LC_MESSAGES)
yesexpr="$1"; noexpr="$2"; yesword="$3"; noword="$4"

while true; do
read -p "Install (${yesword} / ${noword})? " yn
if [[ "$yn" =~ $yesexpr ]]; then make install; exit; fi
if [[ "$yn" =~ $noexpr ]]; then exit; fi
echo "Answer ${yesword} / ${noword}."
done


Используя команды read и select, ты можешь сделать свои скрипты более интерактивными и удобными для пользователей. Попробуй сам и убедись в их эффективности!

🌳 Ветка: https://stackoverflow.com/questions/226703/how-do-i-prompt-for-yes-no-cancel-input-in-a-linux-shell-script

📩 Завтра: Топ команды для DevOps: Что спрашивают на собеседованиях
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Секреты массового управления пользователями и группами в Linux
🧠 - Не трать время на логи! Вот как найти все медленные запросы за 1 минуту
🧠 - Как ускорить MySQL? Простые советы, чтобы твой сервер летал, как на стероидах

#stackoverflow @LinuxSkill #Linux #ShellScripting #UserInput #SysAdmin #DevOps
👍16
🚀 Почему бенчмарки в bash дают разные результаты?

Привет, повелитель терминала! 🧙‍♂️

Запустил простой код:

bash -c 'x=0; time while ((x < 999999)); do ((++x)); done'


А время выполнения прыгает от 0.9 до 2.2 секунд? Почему?

Ответ: CPU Frequency Scaling.
Процессор снижает частоту при простое и повышает под нагрузкой.
Из-за этого первое выполнение скрипта медленнее последующих.

Решение:

1. Зафиксировать максимальную частоту ядра:

sudo cpupower -c 0 frequency-set -g performance


2. Закрепить выполнение скрипта за одним ядром:

taskset -c 0 ./your-benchmark


3. После теста вернуть режим энергосбережения:

sudo cpupower -c 0 frequency-set -g powersave


Бонус: Делай "разогревочный" прогон перед реальными замерами и старайся минимизировать фоновую нагрузку.

🌐 Источник: https://unix.stackexchange.com/questions/777424/why-are-my-benchmark-times-not-repeatable-even-for-a-cpu-bound-task

📩 Завтра: Как узнать ВСЁ о железе и системе в Linux за 5 минут
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Мастер-класс по iptables: вставляем, заменяем и удаляем правила
🧠 - Настраиваем iptables с нуля: Полный гайд по фильтрации пакетов
🧠 - Раскрой тайны владения файлами с namei -o!


#stackoverflow @LinuxSkill #linux #bash #benchmark #performance
👍17🔥1
🚨 Процесс с неизвестным именем грузит CPU на 25000%! Что происходит?

Привет, повелитель терминала! На одном из серверов Linux обнаружили странный процесс:
- Имя вроде 89cdb92b, потом меняется на другое (ac1e4262)
- Процесс запущен от root
- CPU загружено на 25369% (!)
- Файл процесса уже удалён: /proc/<PID>/exe → (deleted)

Это может быть майнер или вредоносная программа. Простое перезагружение не решает проблему: процесс появляется снова.

🔍 Что делать:

1. Проверить родителя процесса:
   pstree -sap <PID>


2. Узнать командную строку процесса:
   ps -o args -p <PID>


3. Скопировать бинарник для анализа:
   cp /proc/<PID>/exe /tmp/suspect_binary


4. Безопасно изучить его содержимое:
   strings /tmp/suspect_binary


5. Проверить открытые файлы:
   lsof -p <PID>


6. Изучить логи на момент запуска процесса:
   journalctl -S 'YYYY-mm-dd HH:MM'


📌 Важно: при компрометации — лучше переустановить систему с чистого образа!

🌐 Источник: https://unix.stackexchange.com/questions/782519/high-cpu-usage-by-process-with-obfuscated-name-on-linux-server-potential-attac

📩 Завтра: Как узнать ВСЁ о железе и системе в Linux за 5 минут
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Неожиданные секреты Linux: 12 утилит, которые спасут твой сервер!
🧠 - Открой для себя 15 малоизвестных команд LINUX, которые изменят твою жизнь
🧠 - Как удалить экспортированную переменную окружения в Linux?

#stackoverflow @LinuxSkill #Linux #Security #Malware #CPU #Root
👍22
🚨 Можешь ли ты использовать sudo без пароля? Проверь за 5 секунд!

👋 Привет, мастер терминала! Иногда нужно понять: можешь ли ты выполнять команды через sudo без запроса пароля? Особенно важно для скриптов и автоматизации.

Базовая проверка:

sudo -n true 2>/dev/null || exit 1

- -n запрещает запрос пароля.
- Команда мгновенно завершится с ошибкой, если пароль требуется.

🛡️ Проверка без влияния кэшированных сессий:

sudo -k
sudo -n true 2>/dev/null || exit 1

- sudo -k очищает кэш пароля.

🔍 Защита от частных NOPASSWD правил:

rand=$(mktemp /tmp/true.XXXXX)
cp /usr/bin/true "$rand"
sudo -n "$rand" 2>/dev/null && echo "Есть доступ" || echo "Нет доступа"
rm "$rand"

- Проверяем реальное право на запуск любой команды без пароля.

🌐 Источник: https://unix.stackexchange.com/questions/777552/check-if-current-user-can-run-sudo-without-requiring-a-password

📩 Завтра: Что будет, если ввести неправильный пароль в sudo? (спойлер: тебя унизят)
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Производительность Nginx vs Apache: кто победит?
🧠 - Как измерить время выполнения программы в Linux?
🧠 - Осторожно: Как не стать жертвой сниффинга паролей на Linux!

#stackoverflow @LinuxSkill #linux #bash #sudo #shell #security
👍12