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

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

РКН https://vk.cc/cMUwm4
Download Telegram
🔐 Забыл заблокировать ПК? Твой телефон сделает это за тебя

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

Знакомо? Отошёл за кофе, а коллега уже изучает твой браузер. Сейчас покажу, как превратить твой смартфон в умный ключ — 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
👍23🔥10👀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
🔥13👍4
🎯 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
👍13
🔥 Читаемые логи одной командой: секрет в 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
👍7
🔥 Циклы в Bash: от каменного века до современности

Эй, мастер итераций!

Всё ещё пишешь for i in 1 2 3 4 5? Покажу эволюцию циклов в Bash — от динозавров до современного синтаксиса!

🦕 Каменный век:
for a in 1 2 3 4 5 6 7 8 9 10
do
echo -n "$a "
done


🏛️ Античность (seq):
for a in `seq 10`
do
echo -n "$a "
done


🏭 Индустриальная эра (Bash 3+):
for a in {1..10}
do
echo -n "$a "
done


🚀 Современность (C-style):
LIMIT=10
for ((a=1; a <= LIMIT; a++))
do
echo -n "$a "
done


💥 Высший пилотаж — оператор запятая:
# Инкремент двух переменных одновременно!
for ((a=1, b=1; a <= LIMIT; a++, b++))
do
echo -n "$a-$b "
done
# Вывод: 1-1 2-2 3-3 4-4 5-5...


💡 Что выбрать:
- {1..10} — для простых диапазонов
- C-style — для сложной логики
- seq — для обратной совместимости

Все примеры выводят: 1 2 3 4 5 6 7 8 9 10

Больше никаких длинных перечислений! Используй современный синтаксис.
____________________

Дополнительный материал:
🧠 - Централизованное управление пользователями в Linux: Гармония преимуществ и вызовов
🧠 - Создание учетной записи пользователя в Linux: Пошаговое руководство
🧠 - Мастер-класс по созданию системных аккаунтов в Linux

#bash_guide #bash #loops #scripting #Linux #programming #for
👍17
15 строк кода = полный контроль над производительностью

Эй, повелитель серверов!

Надоело переключаться между htop, df и free? Сейчас соберём свой монитор системы, который покажет всё важное одной командой. Bash + Python = твоя личная панель управления.

📌 Что получишь:
- CPU, RAM и диск в одном месте
- JSON-формат для интеграции
- Легко расширить под свои нужды

🔧 Шаг 1: Python-сборщик данных

Создай monitor.py:
import psutil
import json

def get_system_stats():
stats = {
"cpu": psutil.cpu_percent(interval=1),
"memory": psutil.virtual_memory().percent,
"disk": psutil.disk_usage('/').percent
}
return json.dumps(stats)

if __name__ == "__main__":
print(get_system_stats())


🔧 Шаг 2: Bash-обработчик

Создай monitor.sh:
#!/bin/bash
# Получаем данные от Python
stats=$(python3 monitor.py)

# Парсим JSON через jq
cpu=$(echo $stats | jq -r '.cpu')
memory=$(echo $stats | jq -r '.memory')
disk=$(echo $stats | jq -r '.disk')

# Красивый вывод
echo "CPU Usage: $cpu%"
echo "Memory Usage: $memory%"
echo "Disk Usage: $disk%"


🚀 Запускаем:
# Делаем исполняемым
chmod +x monitor.sh

# Смотрим магию
./monitor.sh


Результат:
CPU Usage: 12.3%
Memory Usage: 45.6%
Disk Usage: 67.8%


💡 Прокачай скрипт:
- Добавь алерты при превышении порогов
- Логируй данные для графиков
- Отправляй метрики в Telegram при критических значениях

Теперь один скрипт заменяет кучу утилит. А главное — ты можешь допилить его под свои задачи!
____________________

Дополнительный материал:
🧠 - Мастер-класс по выключению и перезагрузке Linux с помощью команды shutdown
🧠 - Прозрачность systemd: Освещаем теневые уголки системных процессов в Linux
🧠 - Управление питанием в Linux: Искусство выключения с помощью systemctl

#Linux_Mastery #Linux #Monitoring #Python #Bash #DevOps #Performance
🔥8👍6
🔥 Зависло 100 вкладок в Chrome? Убей все одной командой

Эй, терминатор процессов!

Знакомо? Открыл 100 вкладок Chrome, система зависла, а killall не установлен. Держи скрипт, который работает везде!

🔧 kill-byname.sh:
#!/bin/bash
# Убийца процессов по имени

E_BADARGS=66

if test -z "$1"; then
echo "Usage: $(basename $0) имя_процесса"
exit $E_BADARGS
fi

PROCESS_NAME="$1"

# Магическая строка
ps ax | grep "$PROCESS_NAME" | awk '{print $1}' | xargs -i kill {} 2>/dev/null

exit $?


💡 Как работает магия:
- ps ax — список всех процессов
- grep — фильтруем по имени
- awk '{print $1}' — извлекаем PID
- xargs -i kill {} — убиваем каждый процесс

🚀 Использование:
# Убить все Chrome
./kill-byname.sh chrome

# Закрыть все терминалы
./kill-byname.sh xterm

# Остановить Firefox
./kill-byname.sh firefox


⚠️ ВНИМАНИЕ:
Скрипт опасен! Особенно под root. Можешь случайно убить системные процессы.

💡 Альтернативы:
# Если есть killall
killall chrome

# Через pkill
pkill -f chrome

# Через pidof
kill $(pidof chrome)


Теперь ты можешь массово управлять процессами даже на минимальной системе!
____________________

Дополнительный материал:
🧠 - Революция в управлении дисковым пространством: Встречайте topdiskconsumer
🧠 - Все о группах в Linux: Почему это важно для каждого пользователя?
🧠 - Энциклопедия Docker: Незаменимые инструменты для системных администраторов

#bash_guide #bash #process #kill #Linux #sysadmin #script
👍9
🔥 Забудь про $1 $2 $3: умные опции через getopts

Привет, архитектор CLI!

Надоело парсить аргументы через позиционные параметры? Делаем профессиональные флаги как в настоящих утилитах!

🔧 Базовый шаблон с getopts:
#!/bin/bash

# Проверка аргументов
if [ $# -eq 0 ]; then
echo "Usage: $(basename $0) -mnopqrs"
exit 1
fi

# Парсинг опций
while getopts ":mnopq:rs" Option; do
case $Option in
m ) echo "Опция -m активна";;
n|o ) echo "Опция -$Option активна";;
p ) echo "Опция -p активна";;
q ) echo "Опция -q с аргументом: $OPTARG";;
r|s ) echo "Опция -$Option";;
* ) echo "Неверная опция";;
esac
done

# Сдвиг к не-опциям
shift $(($OPTIND - 1))


💡 Как работает:
- :mnopq:rs — строка опций (: после q = требует аргумент)
- $OPTARG — значение для опции с аргументом
- $OPTIND — индекс следующего аргумента

🚀 Примеры вызова:
./script.sh -m -n
./script.sh -mn # можно слитно!
./script.sh -q "значение"
./script.sh -mnop -q test


📌 Бонус — импорт функций:
# Загружаем общие функции
source /path/to/common_functions.sh
# или
. ./config.sh


Теперь твои скрипты выглядят как настоящие Linux-утилиты!
____________________

Дополнительный материал:
🧠 - Командный центр Linux: Ваше руководство по базовым консольным программам
🧠 - Защитный барьер Linux: Как система обеспечивает безопасность пользователей и групп
🧠 - Мастер-класс по консольным программам Linux: Разбираемся с UID и GID

#bash_guide #bash #getopts #cli #scripting #Linux #arguments
👍13
💾 Невидимые файлы съели весь диск? Вот решение

Привет, спасатель серверов!

Знакомо: df кричит "100% занято", а найти виновника не можешь? Держи шпаргалку для экстренных ситуаций — все команды проверены в боевых условиях.

Базовая диагностика

Смотрим общую картину:
# df -h


Ищем самые прожорливые директории:
# du -h -d 1 / | sort -hr
# du -hs /* | sort -hr

# Ограничиваем вывод топ-10
# du -h -d 1 / | sort -hr | head -10

# Топ-20 самых больших директорий
# du -hcx --max-depth=6 / | sort -rh | head -n 20

# Топ-20 самых больших файлов
# find / -mount -ignore_readdir_race -type f -exec du -h "{}" + 2>&1 \
> | sort -rh | head -n 20


Проверка inodes

Иногда место есть, но закончились inodes:
# df -ih


Охота на файлы-призраки

Ситуация: du показывает мало занятого места, но df говорит "диск полный". Причина — удалённые файлы, которые держит процесс:

# lsof | grep '(deleted)'
# lsof +L1


Нашли большие deleted-файлы? Перезапусти службу или убей процесс через kill -9 <pid>.

Ловушка с точками монтирования

Хитрый случай: скрипт должен был писать в смонтированный диск /mnt/backup, но диск не подключился. Файлы записались в локальную систему и теперь скрыты под точкой монтирования!

Как проверить:
1. Отмонтируй диск временно
2. Загляни в директорию
3. Удали мусор
4. Примонтируй обратно

Профилактика: всегда проверяй успешность монтирования перед записью данных в скриптах.

💡 Итог: 90% проблем с местом решаются этими командами. Сохрани и используй при первых признаках "disk full".

____________________

Дополнительный материал:
🧠 - Осваиваем RAID Массивы в Linux: Путь к Надежности и Производительности
🧠 - История OpenSUSE: От Зеленого Ящерика к Глобальному Сообществу
🧠 - Разблокируем секреты Linux: Специальные разрешения файлов

#Linux_Mastery #bash #terminal #linux #sysadmin #troubleshooting #storage
🔥12👍8
🔧 История команд исчезает? Вот решение

Привет, хранитель команд!

Бесит, когда нужная команда не сохранилась в history? На всех своих серверах первым делом настраиваю правильное хранение истории. Делюсь проверенными настройками для ~/.bashrc.

Мгновенное сохранение команд

PROMPT_COMMAND='history -a'

Команда сохраняется сразу после ввода, а не при выходе из сессии.

Метки времени для команд

export HISTTIMEFORMAT='%F %T '

Теперь видно когда выполнялась команда: 2024-09-25 16:39:30

Увеличение размера истории

export HISTSIZE=10000

Вместо дефолтных 500 команд — храним 10000. Хватает с запасом.

Исключение мусорных команд

export HISTIGNORE="ls:history:w:htop:pwd:top:iftop"

Эти команды не засоряют историю.

Пробел = команда не сохраняется

export HISTCONTROL=ignorespace

Поставил пробел перед командой — она не попадёт в историю.

Применение настроек

# source ~/.bashrc


Проверка параметров

# export | grep -i hist


Для всех пользователей

Создай файл /etc/profile.d/history.sh с этими настройками — применится для всех.

Поиск по истории

Быстрый поиск: Ctrl+R и начинай вводить команду. Повторное Ctrl+R — следующее совпадение.

Мой способ через grep:
# history | grep 'apt install'


⚠️ Опасный подвох HISTIGNORE

История из жизни: htop в исключениях → перезагрузил сервер командой reboot → зашёл обратно → запустил htop → закрыл → нажал стрелку вверх для повтора → там reboot (htop не сохранился!) → Enter на автомате → сервер ушёл в ребут 🤦

Мораль: осторожнее с исключениями и стрелкой вверх!

💡 Итог: правильная настройка history экономит часы при поиске той самой команды, которую вводил месяц назад.
____________________

Дополнительный материал:
🧠 - Btrfs: Революция Файловых Систем в Мире Linux
🧠 - Станьте мастером привилегий в Linux: Всё о sudo и su
🧠 - Docker Swarm & GitLab: Ускоряем Деплой Проектов с Шифрованием Секретов

#Linux_Mastery #linux #terminal #bash #productivity #sysadmin
👍23🔥2
Что делает эта команда?

adduser --disabled-login [OPTIONS] user


Не гугли — напиши в комментах 👇

#linux #bash #useradd #devops #вопрос
👍4👀2
Что делает эта команда?

ar [OPTIONS] archive_name member_files


Не гугли — напиши в комментах 👇

#linux #bash #useradd #devops #вопрос
👍5
💾 Потерял данные? Вот скрипт, который этого не допустит

Привет, хранитель данных!

Делаешь бэкапы вручную? Пора автоматизировать! Готовый bash-скрипт архивирует важные директории и отправляет на удалённый сервер. Настрой раз и спи спокойно.

Скрипт backup.sh

#!/bin/bash

backup_dirs=("/etc" "/home" "/boot")
dest_dir="/backup"
dest_server="server1"
backup_date=$(date +%b-%d-%y)

echo "Starting backup of: ${backup_dirs[@]}"

for i in "${backup_dirs[@]}"; do
sudo tar -Pczf /tmp/$i-$backup_date.tar.gz $i
if [ $? -eq 0 ]; then
echo "$i backup succeeded."
else
echo "$i backup failed."
fi
scp /tmp/$i-$backup_date.tar.gz $dest_server:$dest_dir
if [ $? -eq 0 ]; then
echo "$i transfer succeeded."
else
echo "$i transfer failed."
fi
done

sudo rm /tmp/*.gz
echo "Backup is done."


Как работает скрипт

Переменные:
- backup_dirs — массив директорий для бэкапа
- dest_dir — куда складывать на удалённом сервере
- dest_server — имя/IP целевого сервера
- backup_date — дата в имени архива

Процесс:
1. Архивирует каждую директорию в tar.gz
2. Отправляет по scp на удалённый сервер
3. Проверяет успешность каждого шага
4. Удаляет локальные временные архивы

Пример работы

kabary@handbook:~$ ./backup.sh
Starting backup of: /etc /home /boot
/etc backup succeeded.
etc-Aug-30-20.tar.gz 100% 1288KB 460.1KB/s 00:02
/etc transfer succeeded.
/home backup succeeded.
home-Aug-30-20.tar.gz 100% 2543KB 547.0KB/s 00:04
/home transfer succeeded.
/boot backup succeeded.
boot-Aug-30-20.tar.gz 100% 105MB 520.2KB/s 03:26
/boot transfer succeeded.
Backup is done.


Автоматизация через cron

Добавь в crontab для ежедневного запуска в 3 ночи:
0 3 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1


💡 Совет: настрой SSH-ключи для scp без пароля, иначе скрипт не сработает в cron.

Результат: автоматические бэкапы критически важных данных каждую ночь. Никакой рутины, полная автоматизация.
____________________

Дополнительный материал:
🧠 - От первого контейнера до мощного Swarm: Путешествие Docker в мире DevOps
🧠 - Углубляемся в безопасность Linux: Специальные режимы и их мощь!
🧠 - Разгадываем тайны команды "Apropos": Ваш ключ к миру Linux Man Pages

#Linux_Mastery #bash #backup #automation #sysadmin #scripts
👍18
Что делает эта команда?

for token in a b c; do
echo -n ${token};
done

Не гугли — напиши в комментах 👇

#linux #bash #вопрос
👍6
🔧 20+ переменных Bash, которые ты точно не использовал

Привет, повелитель скриптов!

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

📂 Навигация и окружение
$DIRSTACK — Содержимое вершины стека каталогов
$OLDPWD — Прежний рабочий каталог
$PATH — Путь поиска программ
$HOME — Домашний каталог пользователя

👤 Информация о пользователе
$UID — Содержит реальный идентификатор, который устанавливается только при логине
$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя
$GROUPS — Массив групп к которым принадлежит текущий пользователь

🖥️ Информация о системе
$HOSTNAME — hostname машины
$HOSTTYPE — Архитектура машины
$OSTYPE — Тип ОС

⚙️ Работа со скриптами и функциями
$EDITOR — Текстовый редактор по-умолчанию
$FUNCNAME — Имя текущей функции в скрипте
$SECONDS — Время работы скрипта (в сек.)
$$ — PID самого скрипта
$PPID — Идентификатор родительского процесса
$! — PID последнего запущенного в фоне процесса
$? — Содержит код завершения последней команды

📝 Работа с параметрами
$# — Общее количество параметров переданных скрипту
$* — Все аргументы переданные скрипту (выводятся в строку)
$@ — Тоже самое, что и предыдущий, но параметры выводятся в столбик

🔍 Дополнительные переменные
$LC_CTYPE — Внутренняя переменная, которая определяет кодировку символов

🔖 Сохрани шпаргалку — пригодится в каждом скрипте!

#Linux_Mastery #bash #scripting #linux #automation #devops #sysadmin
👍8🔥3
🧠 Запусти аудит зарубежных IP за 1 секунду на своем VPS

Привет, техноэнтузиаст!

Купил свежий VPS, но не уверен, куда с нее можно дотянуться? Это частая боль: если сервер уже под гео-ограничениями, он бесполезен для работы с зарубежным софтом, GitLab CI или просто для проверки YouTube/TikTok.

Показывать, куда есть доступ, а куда нет, нужно быстро, без установки лишних пакетов. Китайские умельцы давно создали скрипт, который делает это одной командой. Он проверяет доступность YouTube, TikTok, ChatGPT, Gmail и другие сервисы, а также выдает информацию о гео IP адресе виртуалки.

📌 Bash-ванлайнер для аудита VPS
Этот скрипт скачивает и запускает проверку, выводя результат прямо в консоль. Важно: Запускать его нужно на свежеарендованной VPS.

# Скачать и запустить проверку доступности зарубежных сервисов (YouTube, TikTok, ChatGPT и др.)
curl -sL https://check.foreign.services.sh | bash


Как это работает:
1. curl -sL скачивает скрипт (содержит набор пингов и DNS-запросов к актуальным зарубежным IP).
2. | bash передает его сразу на выполнение в Bash. Результат выводится мгновенно.

💡 Вывод
Теперь ты за секунду знаешь, можно ли использовать эту VPS для работы с гео-зависимыми сервисами. Если проверка пройдена, можешь смело приступать к настройке.

#Linux #Bash #DevOps #VPS #CLI #Security
👍9
🚀 Systemd + Bash: Мониторинг зависшего PHP-FPM за 5 строк кода

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

Твой php-fpm начал зависать в любой момент и перестал отвечать на запросы? Это происходит из-за исчерпания ресурсов или процессов, ушедших в непрерываемое ожидание.

Вместо ручного поиска и убийства PID, давай настроим автоматический скрипт, который решит эту проблему за тебя.

📌 Авто-чистка зависших FPM

Этот скрипт ищет дочерние процессы php-fpm в состоянии D и принудительно завершает их, чтобы твой пул восстановился, используя базовые принципы Bash-сценариев.

# Ищем процессы FPM, застрявшие в D-состоянии
STUCK_PIDS=$(ps -o pid=,state= -C php-fpm | grep D | awk '{print $1}')

if [ -n "$STUCK_PIDS" ]; then
# Найдено: принудительно убиваем зависшие процессы (SIGKILL)
# Используй kill -9 только в крайних случаях!
echo "$STUCK_PIDS" | xargs kill -9

# Перезапускаем сервис для гарантированного восстановления
systemctl restart php-fpm
fi


💡 Фишка: Ты можешь запускать этот скрипт через cron или systemd.timer, чтобы автоматизировать траблшутинг. Это гарантирует стабильность твоего сервиса.

#Linux #Bash #DevOps #автоматизация #мониторинг
👍3
Media is too big
VIEW IN TELEGRAM
🤖 Синхронизация каталогов: Ультимативный Bash-гайд для сисадмина

Эй, технарь! Готов автоматизировать рутину?

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

📃 Текстовая инструкция

#Linux #Bash #Автоматизация #rsync #Cron #CLI
👍8🔥2
🛠️ 5 ключевых метасимволов, которые покрывают 80% задач

Привет, инженер!

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

Но чтобы полностью реализовать потенциал командной оболочки, тебе придется овладеть Регулярными Выражениями. РВ — это набор символов и/или метасимволов, которые задают шаблон для поиска текста.

К счастью, тебе не нужно знать их все. Достаточно запомнить базовые метасимволы, которые критически важны для работы с grep, sed и awk.

Вот твоя шпаргалка: 5 ключевых метасимволов, которые покрывают 80% задач:
Регулярные выражения используются для поиска текста по шаблону и работы со строками.

1. Начало и конец строки (^ и $):
- Символ ^ означает начало строки. (Иногда, в зависимости от контекста, он может означать отрицание, например, в квадратных скобках [^...]).
- Знак $ соответствует концу строки.
- Выражение ^$ соответствует пустой строке.

2. Любой символ (.)
Точка (.) соответствует любому одиночному символу. Обычно это любой символ, кроме символа перевода строки.

3. Ноль или больше повторений (*)
Звездочка (*) означает любое количество символов (включая нулевое). Это относится к символу или выражению, предшествующему звездочке. Например, .* означает "любое количество любого символа".

4. Набор символов ([])
Квадратные скобки ([...]) предназначены для задания подмножества (диапазона) символов. Например, [a-z0-9] соответствует одной букве нижнего регистра или одной цифре.

5. Экранирование (\)
Обратный слэш (\) используется для экранирования специальных символов. Это значит, что экранированные символы интерпретируются буквально, как простые символы. Например, комбинация \$ ищет знак доллара как обычный символ, а не как признак конца строки.

💡 Вывод
Основное назначение РВ — это поиск текста по шаблону и работа со строками. Если ты знаешь, как использовать эти 5 метасимволов, ты сможешь эффективно применять grep, sed и awk для большинства повседневных задач.

#Linux #Bash #CLI #Regex #Шпаргалка
👍7🔥2
Media is too big
VIEW IN TELEGRAM
🐧 Linux-администратор: с чего начать и куда расти

👋 Привет, покоритель пингвинов!

Анатолий, ведущий системный администратор с 10-летним опытом, отвечает на главные вопросы: как войти в профессию, нужно ли программировать, стоит ли ставить Linux дома и почему самообразование в IT — это навсегда.

🔗 Источник: https://www.youtube.com/
#linux #sysadmin #карьера #ansible #python #bash #devops