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

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

РКН https://vk.cc/cMUwm4
Download Telegram
🔥 Почему в Linux нужно запускать скрипты через ./ ?

Доброе утро, мастера консоли! ☕️

Каждый в начале пути сталкивается с ошибкой:

script.sh: command not found


Вроде скрипт есть, права +x есть… а запустить нельзя.
В чём подвох?

💡 Всё просто: оболочка ищет команды только в каталогах, прописанных в $PATH.
Текущая директория (.) туда по умолчанию не входит — из соображений безопасности!

Чтобы запустить скрипт из текущей папки, нужно указать явно:

./script.sh


Тем самым ты говоришь системе: "Запусти ЭТОТ конкретный файл, а не ищи его где-то в системных каталогах".

Почему это важно для безопасности:

Представь, ты работаешь под рутом и влетаешь в папку пользователя. А там злой скрипт с именем ls. Без ./ ты бы случайно его запустил вместо нормального ls. Результат: потеря контроля над сервером.

✔️ Для надёжной работы cron-джобов или скриптов в автоматизации всегда указывай полные пути:

/bin/bash /home/user/script.sh


Или определяй команды явно:

CAT=$(which cat)
$CAT script.sh


И помни — добавлять . в $PATH крайне не рекомендуется! Это открывает брешь для атак.

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

Дополнительный материал:
🧠 - Управление процессами: Конвейер (pipeline)
🧠 - Управление процессами: Создание и выполнение скриптов командной строки
🧠 - Установка Docker

#Linux_Mastery #bash #linux #security
👍22
Media is too big
VIEW IN TELEGRAM
🚀 Урок 12 — Проверка вещественных чисел в Bash + подключение сценариев

Привет, мастер точности! 👋
Сегодня разберёмся, как корректно валидировать вещественные числа в Bash и подключать сторонние сценарии без ошибок. Урок для тех, кто хочет чистого кода даже в дробях!

Зачем смотреть?
Узнаешь, как отличать валидные вещественные числа от некорректных
Освоишь технику подключения внешних сценариев (source .sh)
Поймёшь, как строить функции валидации и повторно использовать код

Таймкоды:
00:03 — Введение: что считаем вещественным числом
01:13 — Подключение внешнего bash-сценария
02:01 — Основная функция: делим число на части
07:24 — Проверка целой части
09:15 — Проверка дробной части: никаких минусов!
13:47 — Обработка чисел без точки
15:22 — Блок тестирования и коды возврата
20:01 — Заключение и демонстрация на практике

🌐 Источник: https://www.youtube.com/watch?v=AC0HidtKpoU

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

Дополнительный материал:
🧠 - Terraform с нуля: как автоматизировать инфраструктуру за пару часов!
🧠 - Terraform: Модули, кластеры и магия автоматизации
🧠 - Почему set -e в bash может сломать тебе всё!

#Linux_youtube #bash #linux #bashскрипты #обучение #Linux\_youtube
👍3
Media is too big
VIEW IN TELEGRAM
🚀 Урок 13 — Проверка введённой даты в Bash: с учётом високосных годов

Привет, хранитель временных данных! 👋
Сегодня научимся проверять правильность введённой даты в Bash — с учётом месяцев, дней и даже високосных годов. Да, февраль — не такой простой, как кажется.

Зачем смотреть?
Узнаешь, как обрабатывать ввод даты и исключать ошибки
Научишься определять високосный год и проверять 29 февраля
Подключишь уже написанные сценарии и повторно используешь функции

Таймкоды:
00:03 — Введение и правила високосного года
00:59 — Импорт нормализации даты
02:15 — Первая функция: дни в месяце
04:05 — Проверка дня и месяца
05:59 — Определение високосного года
09:03 — Основной сценарий и импорт
11:53 — Переменные и запуск проверок
15:35 — Условия для 29 февраля
17:36 — Обработка некорректных дат
19:40 — Разбор функций и сценариев
21:34 — Повторная нормализация
22:28 — Финальная проверка дня и месяца
23:59 — Валидация даты и результат
24:48 — Тестирование на реальных примерах
26:35 — Заключение и прощание

🌐 Источник: https://www.youtube.com/watch?v=OymBqzuOMfY&t

📩 Завтра: Как скопировать только изменённые файлы с помощью rsync?
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - BTRFS: Продвинутые техники для настоящих гуру!
🧠 - LinPEAS: Твой помощник в поиске уязвимостей на Linux
🧠 - 10 возможностей Nginx, о которых ты точно не знал

#Linux_youtube #bash #linux #bashскрипты #обучение #Linux\_youtube
👍4
Как скопировать только изменённые файлы с помощью rsync?

Салют! Сегодня разберём одну крутую задачку! Когда работаешь с большими каталогами, часто возникает задача: обновить только изменённые файлы, не трогая новые.

И тут идеально подходит rsync!

Вот как скопировать только те файлы, которые уже есть в целевой папке и имеют изменения:

rsync --checksum --existing -av source/ dest/


Расшифруем:
- --checksum — сравнивать файлы по содержимому, а не по дате или размеру.
- --existing — копировать только те файлы, которые уже есть в dest, новые не создавать.
- -a — режим архивации (права, симлинки и т.д.).
- -v — подробный вывод.

💡 Если не хотите замедлять процесс вычислением контрольных сумм, можно убрать --checksum, но тогда сравнение будет идти только по дате и размеру.

🌐 Источник: https://unix.stackexchange.com/questions/792314/using-rsync-to-copy-only-files-that-have-changed-not-files-that-are-new

📩 Завтра: ТОП-скрипты для автоматизации Linux задач
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - История UNIX. Часть 1
🧠 - История UNIX. Часть 2
🧠 - Установка и настройка Linux-системы: Astra

#stackoverflow #linux #rsync #bash #файлы #linuxskill
👍9
🚀 ТОП-скрипты для автоматизации Linux задач

Привет, искатель эффективности! 👨‍💻

Если хочешь меньше тратить время на рутину в Linux — тебе нужны правильные скрипты.

Сегодня делюсь отличной находкой: на GitHub лежит коллекция полезных bash-скриптов для автоматизации повседневных задач.
Проект развивается в духе "всё для жизни", без лишнего хлама.

🔹 Что можно найти:
- Скрипты для резервного копирования и восстановления
- Мониторинг состояния серверов
- Автоматическая очистка мусора и логов
- Сканирование сети
- Управление Docker-контейнерами
- Базовые операции с системными сервисами

💡 Особенно понравилась идея делать скрипты простыми, легко модифицируемыми под свои нужды.

Почему стоит заглянуть:
- Сэкономишь время на написание велосипедов
- Быстро расширишь свой арсенал инструментов
- Подчистишь и оптимизируешь свои сервера без лишних усилий

🌐 Репозиторий: https://github.com/ggeorgovassilis/linuxscripts

Забирай в закладки и используй на практике!

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

Дополнительный материал:
🧠 - Управление пользователями и группами
🧠 - Управление файловой системой и разрешениями доступа
🧠 - Права Доступа и владения файлами и директориями

#Linux_Mastery #linux #bash #devops #automation #github
👍10👎3
Media is too big
VIEW IN TELEGRAM
🚀 Урок 14 — Bash: произвольные вычисления с точностью до знака

Привет, арифметический архитектор! 👋
Сегодня разберёмся, как делать точные вычисления в Bash: деление, дроби, параметры точности. Простые echo $((1/3)) больше не прокатят 😉

Зачем смотреть?
Освоишь утилиту bc для точных вычислений
Узнаешь, как управлять параметром scale
Напишешь обёртку-сценарий, которая позволяет удобно передавать команды в bc

Таймкоды:
00:00 — Введение: зачем нужна произвольная точность
00:52 — Утилита bc и переменная scale
02:22 — Создание сценария-обёртки для bc
05:29 — Передача команд в bc через ввод
08:58 — Тестирование с разными значениями
10:13 — Заключение: где и как использовать

🌐 Источник: https://www.youtube.com/watch?v=iShlwjx9j-A&t=1s

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

Дополнительный материал:
🧠 - 5 ошибок в настройке балансировки Nginx и как их избежать
🧠 - Как запросить ввод Yes/No/Cancel в shell скрипте?
🧠 - Топ команды для DevOps: Что спрашивают на собеседованиях?

#Linux_youtube #bash #linux #bashскрипты #обучение #Linux\_youtube
👍2
Media is too big
VIEW IN TELEGRAM
🚀 Урок 15 — Блокировка файлов в Bash: как защититься от гонки процессов

Привет, хранитель системного порядка! 👋
Сегодня научимся ставить «замки» на файлы — чтобы два сценария не лезли в один ресурс одновременно. Это особенно важно в cron-джобах, логах и автоматизации.

Зачем смотреть?
Поймёшь, зачем нужна блокировка и как избежать конфликтов
Освоишь утилиту lockfile и напишешь надёжный скрипт
Научишься обрабатывать ошибки и удалять блокировки вручную

Таймкоды:
00:03 — Зачем нужна блокировка файлов
02:10 — Утилита lockfile: установка и суть
03:56 — Переменные, опции и подготовка
08:22 — Проверка lockfile и запуск логики
10:42 — Обработка действия unlock
14:28 — Тестирование: блок, повторные попытки, удаление
16:33 — Заключение и демонстрация в действии

🌐 Источник: https://www.youtube.com/watch?v=To7_cUhCy4c&t=1s

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

Дополнительный материал:
🧠 - Укроти символические ссылки с namei -n!
🧠 - 7 шагов к безопасному серверу: домен, Nginx, Apache, SSL
🧠 - Bash Урок 1: Введение для новичков

#Linux_youtube #bash #linux #bashскрипты #обучение #Linux\_youtube
👍3🔥2
🔥 Как убивать скрипты в Linux после минуты тишины

Привет, исследователь Linux! Когда скрипт "зависает" и перестаёт выводить данные, сервер может ждать бесконечно... Как автоматически завершить такой скрипт, если нет вывода в течение 1 минуты?

Вот решение:

output_timeout() (
set -o pipefail
export TIMEOUT=$1; shift
sh -c 'echo "$$"; exec stdbuf -oL "$@" 2>&1' sh "$@" | perl -ne '
BEGIN {
$SIG{ALRM} = sub {
warn "No output within $ENV{TIMEOUT} seconds, killing PID $pid";
kill "TERM", $pid;
}
}
alarm $ENV{TIMEOUT};
if (!$pid) {$pid = $_} else {print}'
)


Пример запуска:

output_timeout 60 ./s1.sh
output_timeout 60 ./s2.sh
output_timeout 60 ./s3.sh


Пояснение:
- Если скрипт не выводит ничего 60 секунд, он будет автоматически убит.
- После остановки можно запускать следующий скрипт.
- Стандартные потоки stdout и stderr объединены.

🌐 Источник: https://unix.stackexchange.com/questions/789260/how-to-automatically-terminate-shell-scripts-after-1-minute-of-no-output

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

Дополнительный материал:
🧠 - Установка и настройка Linux-системы: Mint
🧠 - Установка и настройка Linux-системы: Kali
🧠 - Linux команды: ls, rm, mkdir, pwd, cd, echo

#stackoverflow #Linux #bash #скрипты #DevOps #администрирование #автоматизация
👍11👎1
⚡️ 10 навыков командной строки, которые ускорят твою работу в Linux!

👨‍💻 Осваивая Linux, многие застревают на базовых командах. Но есть несколько трюков, которые моментально прокачают твои навыки.

Вот что стоит изучить в первую очередь:

1⃣ Комбинирование команд через &&, || и ; — чтобы цеплять действия друг за другом без лишних скриптов.

2⃣ Работа с выводом с помощью | (пайпов) — перенаправляй результат одной команды в другую.

3⃣ Поиск по содержимому файлов с grep, find, ack или rg — находи информацию молниеносно.

4⃣ Расширенное редактирование в nano, vim, micro — ускорь свои правки без GUI.

5⃣ Менеджмент процессов (top, htop, ps, kill) — следи за загрузкой и оперативно управляй задачами.

6⃣ Создание алиасов — превращай длинные команды в короткие ярлыки.

7⃣ Работа с историей команд через history, Ctrl+R — мгновенный доступ к прошлым командам.

8⃣ Пакетные операции с xargs — передавай результаты поиска в другие команды.

9⃣ Быстрая диагностика сети через ping, traceroute, curl, netcat.

🔟 Навыки работы с файлами: tar, gzip, rsync, scp — бэкапы и переносы без боли.

💡 Не бойся экспериментировать и копить свой арсенал полезных приёмов. Чем глубже знаешь командную строку — тем быстрее решаешь любые задачи.

🌐 Источник: https://github.com/jlevy/the-art-of-command-line

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

Дополнительный материал:
🧠 - VirtualBox: Установка и настройка
🧠 - Некоторые сведения о физическом уровне и управлении виртуальными машинами
🧠 - Установка и обзор Linux Ubuntu

#Linux #Bash #Terminal #Productivity #DevOps #github
👍10🔥1
Media is too big
VIEW IN TELEGRAM
🚀 Урок 16 — Библиотеки в Bash: меньше кода, больше пользы

Привет, архитектор shell-решений! 👋
Сегодня покажу, как писать свои библиотеки в Bash: переиспользуем код, избавляемся от дублирования и структурируем функции по уму.

Зачем смотреть?
Узнаешь, как создавать и подключать Bash-библиотеки
Сделаешь код читаемым и переиспользуемым через source
Освоишь изоляцию переменных и избежишь конфликтов в функциях

Таймкоды:
00:04 — Введение: зачем нужны библиотеки
00:32 — Подключение через точку и поведение переменных
03:37 — Преимущества и удобство повторного использования
06:37 — Создание библиотеки с функциями форматирования
10:18 — Проверка команд и форматированный вывод
16:04 — Обработка больших чисел через библиотеку
21:36 — Проверка високосного года как пример
24:48 — Группировка и подключение библиотек
25:34 — Локальные переменные: зачем нужны
26:10 — Как избежать конфликтов имён
26:48 — Заключение и обсуждение в комментариях

🌐 Источник: https://www.youtube.com/watch?v=v74wzgnnxYQ&t=1s

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

Дополнительный материал:
🧠 - Шпаргалка по циклам в Bash
🧠 - Почему бенчмарки в bash дают разные результаты?
🧠 - Как узнать ВСЁ о железе и системе в Linux за 5 минут
----

#Linux_youtube #bash #linux #bashскрипты #обучение #Linux\_youtube
👍6
Media is too big
VIEW IN TELEGRAM
🚀 Урок 17 — Отладка Bash-скриптов: как находить и исправлять ошибки

Привет, охотник за багами! 👋
Сегодня будем искать и устранять ошибки в Bash-скриптах: логические, синтаксические, опечатки — ничто не скроется. На примере простой игры разберём пошаговую отладку.

Зачем смотреть?
Освоишь ключевые приёмы для поиска багов в Bash
Узнаешь, как использовать set и отладочные команды
Научишься ловить и устранять как синтаксические, так и логические ошибки

Таймкоды:
00:04 — Введение: типы ошибок в Bash
01:00 — Запуск и анализ скрипта
06:37 — Исправление логических ошибок
08:22 — Отладочные советы: как выводить и проверять значения

🌐 Источник: https://www.youtube.com/watch?v=uyQ0ZakSzGY

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

Дополнительный материал:
🧠 - Bash Урок 2: Переменные, массивы и логика
🧠 - Урок 3 — Освой циклы Bash
🧠 - Процесс с неизвестным именем грузит CPU на 25000%! Что происходит?
----

#Linux_youtube #bash #linux #bashскрипты #обучение #Linux\_youtube
👍6🔥2
Как за 1 минуту проверить соединение с десятками серверов

Привет, друзья! Сегодня разберём, как автоматизировать проверку подключения к множеству серверов без лишних заморочек с telnet и ручным вводом команд.

Если вам нужно просто узнать — открыт порт на хосте или нет, без передачи данных — вот самые эффективные способы:

1. nmap
Быстрый скан нужных портов:
nmap -sT -p 22 192.168.1.1-5


2. netcat (nc)
Минималистичный способ через nc:
timeout 3 nc -zv host1 22
timeout 3 nc -zv host2 22


3. /dev/tcp в bash
Проверка средствами самого bash:
if (exec 3<>/dev/tcp/host/port) 2>/dev/null; then
echo "Порт открыт"
else
echo "Порт закрыт"
fi


4. fping
Если важен только факт доступности по ICMP:
fping -a -r 0 -qs -g 192.168.1.0/24


Все эти методы можно обернуть в скрипт и проверять десятки или сотни хостов автоматически! 🔥

🌐 Источник: https://unix.stackexchange.com/questions/788022/how-to-check-multiple-hosts-for-simple-connectivity

📩 Завтра: #Инфографика Pacman
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Linux команды: file, mv, cp, rmdir, ps, kill 9, find, sort, , clear
🧠 - Linux команды: mv, настройка Терминала
🧠 - Linux команды: cmp, df, apt get install, remove, update, upgrade, chmod

#stackoverflow #Linux #Bash #Скрипты #Сеть #DevOps #Порты #nmap #netcat
👍8🔥1
🚨 Простая проверка диска с алертом — настроишь за 1 минуту

👋 Привет, линуксоид!

Бывает, диск на проде забивается — и ты узнаёшь об этом, когда уже всё лежит.
Вот скрипт, который автоматически проверит заполнение и предупредит по почте, если всё плохо.

📌 Сохрани себе:

# Set the maximum allowed disk space usage percentage
MAX=90

# Set the email address to receive alerts
EMAIL=user@example.com

# Set the partition to monitor (change accordingly, e.g., /dev/sda1)
PARTITION=/dev/sda1

# Get the current disk usage percentage and related information
USAGE_INFO=$(df -h ""$PARTITION"" | awk 'NR==2 {print $5, $1, $2, $3, $4}' | tr '\n' ' ')
USAGE=$(echo ""$USAGE_INFO"" | awk '{print int($1)}') # Remove the percentage sign

if [ ""$USAGE"" -gt ""$MAX"" ]; then
# Send an email alert with detailed disk usage information
echo -e ""Warning: Disk space usage on $PARTITION is $USAGE%.\n\nDisk Usage Information:\n$USAGE_INFO"" | \
mail -s ""Disk Space Alert on $HOSTNAME"" ""$EMAIL""
fi

____________________

Дополнительный материал:
🧠 - Безопасность и сетевые аспекты: Защита сети и протоколов
🧠 - Сложные сценарии и решения: Работа с крупными и сложными проектами
🧠 - Сложные сценарии и решения: Решение проблем и отладка системы

#инфографика@LinuxSkill #Linux@LinuxSkill #Disk@LinuxSkill #Monitoring@LinuxSkill #SysAdmin@LinuxSkill #Bash@LinuxSkill #CLI@LinuxSkill
👍13🔥2
🚀 Как одна команда echo ломает пайпы в Linux

Привет, повелитель терминала! Задумывался ли ты, почему простая команда /bin/echo может сломать пайп, а встроенная echo в bash — нет? Давай разберёмся 👆

🌐 Источник: unix.stackexchange.com

____________________

Дополнительный материал:
🧠 - Станьте мастером Linux с нашим Бесплатным курсом от Нуля до DevOps
🧠 - Загрузочный диспетчер GRUB: Путешествие в глубины системы
🧠 - Персонализируй свой GRUB: Искусство загрузки с удовольствием

#инфографика@LinuxSkill #Linux@LinuxSkill #Bash@LinuxSkill #Echo@LinuxSkill #SIGPIPE@LinuxSkill #OpenSource@LinuxSkill
👍3
🛡️ Защита системы: как разрешить запуск бинарника только службе systemd

Привет! Сегодня поговорим о том, как надёжно ограничить запуск подозрительных или потенциально небезопасных программ в Linux.

Если ты хочешь, чтобы приложение запускалось только через systemd, без возможности запуска вручную — вот несколько решений:

🔹 SELinux
Создай отдельный SELinux-домен для бинарника. Только init_t сможет инициировать его запуск:
allow init_t myapp_t:process { transition };
type_transition init_t myapp_exec_t:process myapp_t;

Не забудь правильно промаркировать файл через chcon!

🔹 Изменение прав доступа
Можно убрать права на исполнение:
chmod 644 /path/to/binary

А запускать его через:
/lib64/ld-linux-x86-64.so.2 /path/to/binary

Но с потерей некоторых capabilities — учитывай это.

🔹 Контейнеризация через Podman
Запускай приложение в контейнере, ограничивая его окружение:
podman run --rm -p 80:80 your_container_image

Или с генерацией сервис-файлов через podman generate systemd.

Так ты минимизируешь риски и защищаешь систему от случайного или несанкционированного запуска.

🌐 Источник: unix.stackexchange.com

________________

Дополнительный материал:
🧠 - GRUB: Командный мостик космического корабля вашего ПК
🧠 - Утренний будильник для вашего ПК: Включение по расписанию с UEFI
🧠 - GRUB Menu Reveal: Как пригласить скрытое меню на ужин

#stackoverflow #Linux #Systemd #SELinux #Безопасность #Fedora #Администрирование #Bash #DevOps
👍6👎1
🚨 НИКОГДА не редактируй bash-скрипт во время его выполнения!

Привет, повелитель терминала! 👋

Знаешь, что может превратить безобидный скрипт в оружие массового уничтожения данных? Всего одно неосторожное редактирование.

💣 Смотри, какая бомба:

#!/bin/bash
sleep 30
#rm -rf --no-preserve-root /
echo "Time's up!"


Выглядит безопасно? Команда rm закомментирована, скрипт просто ждёт 30 секунд. Но стоит тебе отредактировать его во время выполнения...

Что происходит:
1. Запускаешь скриптbash начинает читать его частями
2. Меняешь sleep 30 на sleep 3 в редакторе
3. Сохраняешь файл → смещение байтов сбивается
4. BOOM!bash читает rm -rf / вместо комментария

🔍 Доказательство через strace:

# Открытие скрипта
openat(AT_FDCWD, "delay.sh", O_RDONLY) = 3

# Парсинг первой строчки (до 80 символов)
read(3, "#!/bin/bash\nsleep 30\n#echo \"Don'"..., 80) = 64

# Возврат к началу
lseek(3, 0, SEEK_SET) = 0

# Переключение на на файловый дескриптор 255
dup2(3, 255) = 255

# Чтение 64-байтового куска файла, чтобы получить команду
read(255, "#!/bin/bash\nsleep 30\n#echo \"Don'"..., 64) = 64

# Поместить курсор обратно в конец команды, которую мы собираемся выполнить
# Offset 21 is the `#`
lseek(255, -43, SEEK_CUR) = 21

# Приостановка выполнения, уход в sleep
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2072

# До возвращения wait4 файл редактируется с `30` на `3`

# Чтение 64-байтового куска файла, чтобы получить следующую команду
# В этом демо я заменил опасную команду на echo
read(255, "echo \"Don't execute me\"\necho \"Ti"..., 64) = 42

# Bash решает выполнить оба echo одновременно без нового чтения
# Очевидно, что-то идёт не так
write(1, "Don't execute me\n", 17) = 17
write(1, "Time's up!\n", 11) = 11

# Чтение следующего фрагмента и обнаружение конца файла
read(255, "", 64) = 0


🛡️ Как защититься:
Копируй скрипт перед редактированием
Останови выполнение перед правками
Используй блокировки файлов
Тестируй на копиях важных скриптов

💡 Вывод
Bash читает скрипт блоками по 64 байта и отслеживает позицию. Удаление символов сдвигает содержимое, но не позицию чтения!

🌐 Источник: https://habr.com/ru/articles/500832/
____________________

Дополнительный материал:
🧠 - GRUB Files Unveiled: Путеводитель по конфигурационным файлам
🧠 - Как настроить автоматическое включение вашего компьютера с помощью RTC
🧠 - GRUB Rescue Ops: Как оживить систему, замершую на grub>

#Linux_Mastery #Linux #Bash #Security #DevOps #SysAdmin #ScriptSafety
👍21
🔐 Забыл заблокировать ПК? Твой телефон сделает это за тебя

Привет, мастер безопасности!

Знакомо? Отошёл за кофе, а коллега уже изучает твой браузер. Сейчас покажу, как превратить твой смартфон в умный ключ — Linux будет автоматически блокироваться, когда ты уходишь.

📌 Что понадобится:
- Bluetooth на компе и телефоне
- 5 минут времени
- Bash-скрипт ниже

🔧 Настройка за 3 шага:

1. Найди MAC-адрес телефона:
# Включи Bluetooth на телефоне и запусти
hcitool scan


2. Создай скрипт автоблокировки:
#!/bin/bash
# MAC-адрес твоего телефона
DEVICE="AA:BB:CC:DD:EE:FF"
# Имя устройства из hcitool scan
DEV_NAME="My Phone"
# Интервал проверки (сек)
INTERVAL=5

# PID xscreensaver
XSS_PID=

# Запускаем xscreensaver, если не запущен
pgrep xscreensaver
if [ $? -eq 1 ]; then
echo "Starting xscreensaver..."
xscreensaver &
fi

# Основной цикл проверки
while [ 1 ]; do
opt=$(hcitool name $DEVICE)
if [ "$opt" = "$DEV_NAME" ]; then
echo "Device '$opt' found"
if [ -n "$XSS_PID" ]; then
echo "Killing $XSS_PID"
kill $XSS_PID
XSS_PID=
fi
else
echo "Can't find device $DEVICE ($DEV_NAME); locking!"
xscreensaver-command -lock
XSS_PID=$!
fi
sleep $INTERVAL
done


3. Запусти и забудь:
chmod +x bluetooth-lock.sh
./bluetooth-lock.sh &


💡 Как это работает:
Скрипт каждые 5 секунд проверяет, видит ли компьютер твой телефон по Bluetooth. Ушёл дальше 10 метров — экран автоматически блокируется. Вернулся — всё как было.

____________________

Дополнительный материал:
🧠 - GRUB Boot Mastery: Изучаем искусство восстановления
🧠 - Как настроить ночное выключение вашего компьютера с помощью cron
🧠 - GRUB Makeover: Как дать новую жизнь конфигурации загрузчика

#Linux_Mastery #Linux #Security #Bash #Bluetooth #Desktop #Automation
👍22🔥8👀1
📦 100GB логов → 0: безопасная очистка одной командой

Эй, борец с переполненными дисками!

Знакомо? Zabbix кричит "disk full", а в /var/log лежит 100GB мусора. Держи улучшенный скрипт очистки, который не сломает ротацию логов.

🔧 cleanup:
#!/bin/bash
# cleanup v2: Безопасная очистка логов

# Проверка root-прав
if [[ $EUID -ne 0 ]]; then
echo "Ошибка: запускай от root!"
exit 1
fi

LOG_DIR=/var/log

# Переходим в директорию логов
cd $LOG_DIR || exit 1

# Очищаем, но не удаляем файлы
cat /dev/null > messages
cat /dev/null > wtmp

echo "Логи очищены."
exit 0


💡 Почему именно так:

cat /dev/null > вместо rm — сохраняет файл и права доступа. Сервисы продолжат писать логи без перезапуска.

Проверка root — защита от случайного запуска.

exit 0 — явный код возврата для автоматизации.

🚀 Автоматизируй:
# Добавь в cron для еженедельной очистки
0 3 * * 0 /root/cleanup.sh


Теперь диск не переполнится внезапно, а сервисы продолжат работать!
____________________

Дополнительный материал:
🧠 - LSOF: Многофункциональный инструмент для системных администраторов Linux
🧠 - User Private Group: Революционный подход Red Hat к безопасности пользователей в Linux
🧠 - Настройка sudo для аутентификации без пароля root: Пошаговое руководство

#bash_guide #bash #logs #cleanup #Linux #sysadmin #script
🔥9👍2
🎯 8-я строка из 10000: достаём мгновенно

Привет, хирург логов!

Нужна конкретная строка из огромного файла? Забудь про медленный grep. Комбо head + tail работает как скальпель!

🔧 Базовый мониторинг логов:

#!/bin/bash
filename=sys.log

# Создаём/очищаем файл
cat /dev/null > $filename
# Альтернативы: : > $filename или > $filename

# Снимок последних строк системного журнала
tail /var/log/messages > $filename
echo "$filename содержит 10 последних строк системного журнала."


💡 Извлекаем конкретную строку:

# 8-я строка из файла
head -n 8 database.txt | tail -n 1

# 100-я строка? Легко!
head -n 100 huge.log | tail -n 1


🚀 Продвинутый трюк — блок в переменную:

# Сохраняем строки 50-55 в переменную
var=$(head -n 55 $filename | tail -n 5)

# Формула:
# head -n $m | tail -n $n
# m = до какой строки читать
# n = сколько строк от конца взять


📝 Важно:

# Старый синтаксис (deprecated)
tail -10 file.txt

# Правильный синтаксис
tail -n 10 file.txt


🛡️ Права доступа:

# Для общего доступа к логам
chmod 644 /var/log/messages


Теперь ты можешь выдёргивать любую строку из любого лога мгновенно!
________________

Дополнительный материал:
🧠 - Понимание UID и GID в Linux: Не просто числа, а ключи к безопасности
🧠 - Установка нового пароля root в Linux: Пошаговое руководство для системных администраторов
🧠 - Мастерство управления пользователями в Linux: Ваше полное руководство

#bash_guide #bash #logs #tail #head #Linux #sysadmin
👍9
🔥 Читаемые логи одной командой: секрет в xargs

Привет, укротитель логов!

Устал от нечитаемого месива в /var/log/messages? Покажу трюк с xargs, который превратит системные логи в аккуратный отчёт.

🔧 Скрипт мониторинга:
#!/bin/bash
# logfile.sh - создаём читаемый отчёт из системных логов

LINES=5

# Заголовок с датой и системой
( date; uname -a ) >>logfile
echo "----------------------------------------" >>logfile

# Магия: tail + xargs + fmt
tail -n $LINES /var/log/messages | xargs | fmt -s >>logfile

echo >>logfile
exit 0


💡 Как это работает:
- tail -n 5 — берём последние 5 строк
- xargs — объединяет строки в одну
- fmt -s — форматирует текст для читаемости

🚨 Защита от кавычек:
# Если в логах есть непарные кавычки
tail -n $LINES /var/log/messages | tr -d "\"'" | xargs | fmt -s >>logfile


🚀 Автоматический мониторинг:
# Каждые 20 минут
watch -n 1200 ./logfile.sh

# Или через cron
*/20 * * * * /path/to/logfile.sh


📝 Не забудь права:
# Чтобы скрипт работал не только от root
chmod 644 /var/log/messages


Теперь вместо каши получишь структурированный отчёт!
____________________

Дополнительный материал:
🧠 - Усиление безопасности веб-серверов Linux с помощью самоподписанных сертификатов
🧠 - Секретные техники от Linux Skill: Откройте для себя мир возможностей!
🧠 - Взгляд в прошлое: Историческая роль файла /etc/passwd в Linux

#bash_guide #bash_guide #bash #logs #xargs #monitoring #Linux #sysadmin
👍3