DevOps Portal | Linux
13.4K subscribers
868 photos
112 videos
10 files
882 links
Присоединяйтесь к нашему каналу и погрузитесь в мир DevOps

Связь: @devmangx

РКН: https://clck.ru/3P8kFH
Download Telegram
Как в терминале Linux отобразить ход выполнения операции копирования или удаления? 🗑📄

Бывает что вы вводите команду cp или rm для копирования или удаления чего-либо и после нажатия Enter курсор просто повисает в терминале. Согласитесь, что было бы приятнее видеть какой-то прогресс в выполнении этой команды. Чтобы сделать это используется ключ --verbose или -v. В контексте Linux и других UNIX-подобных систем, указанные опции обычно относятся к режиму вывода подробной информации о выполняемых командах.

Например, вот так можно работать с копированием:
cp -v <исходные_файлы_или_каталог> <целевой_каталог>


Или удалением:
rm -rf -v <каталог>


Выхлоп будет содержать подробности совершаемых операций. И станет наглядно видно, что происходит и когда это закончится. Согласитесь, что в определенных моментах это удобно? Естественно, ключ --verbose или -v будет работать не только с копированием или удалением.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍223
Работаем с блочными устройствами Linux через скрипты

Сегодня расскажу про две очень полезные утилиты Linux, с помощью которых удобно в скриптах делать проверки наличия подключенных и примонтированных блочных устройств и файловых систем. Это утилиты findmnt и findfs.

1️⃣ Findmnt удобна и полезна сама по себе, без привязки к скриптам. Просто запустите её и посмотрите вывод. Она выводит в консоль подробную информацию о всех точках монтирования. А ключ -x ещё и позволяет проверить отредактированный файл fstab на наличие в нём ошибок. Рекомендую запомнить эту возможность и использовать:

# findmnt -x 
Success, no errors or warnings detected


Если в чём-то ошибётесь, то получите ошибку:

# findmnt -x 
/mnt/backup
[E] unreachable on boot required source: UUID=151ea24d-977a-412c-818f-0d374baa5012


2️⃣ Findfs сама по себе ничего не выводит. Она умеет искать файловые системы по заданными параметрами В качестве аргумента принимает значение LABEL, UUID, PARTLABEL и PARTUUID. Например так:

# findfs "UUID=151ea24d-977a-412c-818f-0d374baa5013" 
/dev/sda2


Нашли файловую систему на /dev/sda2 с заданным UUID. При этом код выхода будет 0:

# echo $? 
0


Если файловая система не будет найдена, код будет 1:

# findfs "UUID=151ea24d-977a-412c-818f-0d374baa5012" 
findfs: unable to resolve 'UUID=151ea24d-977a-412c-818f-0d374baa5012'
# echo $?


3️⃣ Соответственно, подобную проверку можно использовать в скриптах перед тем, как выполнять какие-то действия. Это актуально для каких-нибудь бэкапов или синхронизаций на сетевых или внешних дисках. Делаем простую проверку, типа такой:

if findfs "UUID=$1" >/dev/null; then 
echo "$1 connected."
else
echo "$1 not connected."
fi


Вместо echo можно сразу выполнять какое-то действие. Оно будет выполнено, если указанный скрипту UUID подключен. То есть сам скрипт работает так:

# ./check-fs.sh 151ea24d-977a-412c-818f-0d374baa5013 
151ea24d-977a-412c-818f-0d374baa5013 connected.


Точно так же по аналогии можно сделать проверку точек монтирования с помощью findmnt:

if findmnt -rno TARGET "$1" >/dev/null; then 
echo "$1 mounted."
else
echo "$1 not mounted."
fi


Проверяем:

# ./check-mnt.sh /mnt/extbackup 
/mnt/extbackup not mounted.


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

Если информация оказалась полезной, то поставьте лайк этой заметке 😧

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍243
Коды завершения в Linux 🚪

Обратили внимание на такую вот конструкцию в предыдущем посте:

echo $?


Команда echo, думаю, понятно что делает. Но что за значок доллара и вопросительный знак после? Это обозначение для вывода кода завершения команды.

Логика простая: если вернется 0, то ошибок нет, команда отработала как нужно. Если получили 1, то что-то пошло не так. Все просто 🤷‍♂️

Использовать удобно все в тех же скриптах для проверки успешности того, как этот скрипт отработал. Например, нужно выполнить какое-то действие только после того, как будете уверены, что конфигурация верная. Вначале выполняем валидацию конфига (допустим, веб-сервера Nginx):

nginx -t


После проверяем, что вернулся 0 и если да, то выполняем команду на рестарт конфига:

nginx -s reload


Если получили 1, то нужно проверить конфигурацию веб-сервера на ошибки.

Обычному пользователю такое никогда может и не пригодится, но если вы любите скрипты и автоматизацию работы с системой, то коды завершения сильно упростят жизнь. Профи об этом уж точно знают, новичкам будет полезно ☺️

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍185
Основы систем инициализации в Linux: всё, что вы должны знать 🐧

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

1️⃣ Что такое система инициализации?

Система инициализации - это программа, которая запускает и останавливает другие программы при старте и выключении компьютера. Она играет ключевую роль в процессе загрузки дистрибутива. В мире Linux существует несколько систем инициализации, но мы сосредоточимся на двух основных: SysV и systemd.

1. SysV init:
SysV init - это одна из старейших систем инициализации в Linux. Она использует скрипты в стиле Bash для управления службами. Каждая служба имеет свой собственный скрипт инициализации, расположенный в каталоге /etc/init.d. Вы можете управлять службами, используя команды, такие как service или chkconfig.

Пример запуска службы с использованием SysV init:

sudo service apache2 start


2. systemd:
systemd - это современная система инициализации, которая заменяет SysV init во многих дистрибутивах Linux. Она управляет службами и процессами с использованием юнит-файлов, и она более мощная и гибкая по сравнению с SysV init.

Пример запуска службы с использованием systemd:

sudo systemctl start apache2


2️⃣ Как выбрать систему инициализации?

Большинство современных дистрибутивов Linux используют systemd, но некоторые старые или специализированные дистрибутивы могут все еще использовать SysV init. Вы можете проверить, какая система инициализации используется на вашем компьютере, выполнив команду:

ps -p 1 -o comm=


3️⃣ Что выбрать новичку?

Если вы новичок в мире Linux, то systemd, скорее всего, будет более удобным выбором, так как он более современный и интуитивно понятный. Он также предоставляет множество инструментов для управления службами, журналами и т. д.

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

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍221
Проверка работоспособности SSD/HDD в Linux 💾

SMART (технология самоконтроля, анализа и отчетности) - это функция, включенная во все современные жесткие диски и твердотельные накопители для мониторинга и тестирования надежности. Он проверяет различные атрибуты диска, чтобы обнаружить возможность отказа диска. Существуют различные инструменты, которые доступны в Linux и Windows для выполнения интеллектуальных тестов работоспособности. Из этой инструкции вы узнаете, как проверить работоспособность SSD/HDD в Linux с помощью терминала. В последующих постах поговорим про то, как это сделать через графический интерфейс в различных средах рабочего окружения.

1️⃣ Проверка работоспособности SSD накопителя с помощью Smartctl

Smartctl - это утилита командной строки, которая может быть использована для проверки состояния жесткого диска или SSD с поддержкой S.M.A.R.T в системе Linux. Утилита Smartctl поставляется вместе с пакетом smartmontools. Smartmontools доступна по умолчанию во всех репозиториях дистрибутивов Linux, включая Ubuntu, RHEL, CentOS и Fedora.

2️⃣ Как установить smartmontools в Linux? ⬇️

Ubuntu
$ sudo apt install smartmontools

Запустите службу с помощью следующей команды.
sudo /etc/init.d/smartmontools start

RHEL и CentOS
sudo yum install smartmontools

Fedora
sudo dnf install smartmontools

Служба Smartd запустится автоматически после успешной установки. Если вдруг Smartd не запустился, сделать это можно командой:
sudo systemctl start smartd

3️⃣ Проверка работоспособности SSD/HDD ⚒️

Чтобы проверить общее состояние, введите команду:
sudo smartctl -d ata -H /dev/sda

Что значат эти параметры:

-d - указывает тип устройства.
ata - тип устройства ATA, используйте scsi для типа устройства SCSI.
-H - проверяет устройство, чтобы сообщить о его состоянии и работоспособности.

Возможны два варианта выхлопа: все хорошо и диск исправен, или, если устройство сообщает о неисправном состоянии работоспособности, это означает, что устройство уже вышло из строя или может выйти из строя очень скоро. В этом случае, можно получить дополнительную информацию:
sudo smartctl -a /dev/sda

Вы можете увидеть следующие атрибуты:

- [ID 5] Reallocated Sectors Count - Количество секторов, перераспределенных из-за ошибок чтения.
- [ID 187] Reported Uncorrect - Количество неисправимых ошибок при доступе к сектору чтения/записи.
- [ID 230] Индикатор износа носителя - Текущее состояние работы диска на основе срока службы.

Если вы видите 100 - это лучшее значение. Если видите 0 - это ХУДШЕЕ значение.

Чтобы инициировать расширенный тест (long), выполните следующую команду:
sudo smartctl -t long /dev/sda

Чтобы выполнить самотестирование, введите команду:
sudo smartctl -t short /dev/sda

Чтобы найти результат самопроверки диска, используйте эту команду:
sudo smartctl -l selftest /dev/sda

Чтобы оценить время выполнения теста, выполните следующую команду.
sudo smartctl -c /dev/sda

Вы можете распечатать журналы ошибок диска с помощью команды:
sudo smartctl -l error /dev/sda

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

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25
Кратко о CHROOT

1️⃣ Что такое chroot?

CHROOT – это системный вызов, который временно перемещает root каталог в новую папку. Как правило, root каталог находится в «/». Но при помощи chroot можно задать другой каталог, который будет служить как root-каталог в окружении chroot. Любые приложения, которые запускаются внутри изолированного окружения, в принципе не могут взаимодействовать с остальной операционной системой. Кроме того, не-рутовый пользователь (non-root), помещённый в chroot-окружение, не сможет перемещаться по иерархии каталогов

2️⃣ Зачем оно нужно?

Chroot-окружение необходимо в самых различных ситуациях. К примеру, оно позволяет собирать, устанавливать и тестировать программное обеспечение в среде, которая отделена от остальной операционной системы. Также его можно использовать для запуска 32-битных приложений в 64-битной среде.

В целом, chroot – это способ временно воссоздать окружение операционной системы из подмножества файловой системы. Это позволяет временно перейти с привычных утилит на их экспериментальные версии, посмотреть, как приложения ведут себя в чистом окружении; также chroot может помочь выполнить операции по восстановлению, развернуть систему или создать дополнительный барьер, чтобы предотвратить потенциальный взлом системы.

3️⃣ Недостатки chroot

Основным недостатком chroot является неудобство в работе, вызванное тем, что в системе могут существовать приличное количество окружений и разных архитектур. Ну и стоит помнить, что даже этот способ не является 100%-тно безопасным и не защищает систему от кривых рук пользователя.

Постарался по простому объяснить что такое chroot, для чего он нужен и какие у него есть минусы. Если пост понравился, то поддержите его лайком 🤝

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50🤝21
Как создать несколько директорий в консоли Linux одной командой? 📁

Вот нужно вам создать несколько папок через терминал Linux. Например, я чаще всего использую для этих целей именно терминал, так как мне это кажется намного быстрее. Создать папку можно простой командой:
mkdir <имя_папки>


Но что делать, если нужно создать за раз, например, пять директорий? Логичным выглядит ввод команды на создание каталога пять раз. Логичным, но крайне неудобным и точно не быстрым. Далее напрашивается использование символа точки с запятой, чтобы выполнить команды в терминале последовательно:
mkdir <имя_папки1>;mkdir <имя_папки2>;mkdir <имя_папки3>;mkdir <имя_папки4>;mkdir <имя_папки5>


Внешне смотрится просто отвратительно да и это, по сути, те же пять команд на создание, просто в одну строку написанные, поэтому тоже не подойдет. Правильным решением будет использование следующего синтаксиса:
mkdir -p {<имя_папки1>,<имя_папки2>,<имя_папки3>,<имя_папки4>,<имя_папки5>}


Ключ -p говорит о том, что должны будут создаться все директории, которые указаны в пути до нужно папки. Отлично работает в ситуациях, когда вы решили поиграть со вложенностью. Также обратите внимание, что никаких пробелов между названиями папок быть не должно, все плотненько и без отступов.

Ничего сложного, правда? Да и получается в разы быстрее, чем посредством GUI-шки клепать кликами мыши нужно число папок. Так что, запоминаем и используем по мере необходимости ☝️

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35
Прозрачное программное обеспечение: Безопасность цепочек поставок ПО

Авторы знакомят нас с основными векторами атак, такими как мобильные и социальные сети, банковские системы и системы розничной торговли и даже критически важные инфраструктуры, а также с системами защиты, на которые мы все полагаемся.

Вы узнаете, как защититься от угроз, и познакомитесь с практическими рекомендациями как для потребителей, так и для поставщиков ПО. «Прозрачное программное обеспечение» — ценный источник знаний для специалистов по кибербезопасности и безопасности приложений, а также для профессионалов, работающих в области безопасности промышленных систем управления, облачной безопасности, мобильной безопасности, DevOps и DevSecOps.

Автор:
Крис Хьюз, Тони Тернер
Год:
2025

📂 Скачать книгу

👉 DevOps Portal | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Комбайн для работы с архивами в консоли Linux

При работе с архивами в командной строке Linux есть одно неудобство: у каждой программы-архиватора свой набор ключей, который необходимо помнить, либо постоянно заглядывать в man. Эта проблема легко решается, если использовать утилиту atool, так как с ее помощью вы сможете работать с любым форматом архивов.

1️⃣ Установка atool

Программу можно скачать с официальной страницы, либо установив с помощью пакетного менеджера вашего дистрибутива:

sudo apt install atool (Debian/Ubuntu/Linux Mint)

sudo dnf install atool (Fedora)

sudo pacman -S atool (Archlinux)

2️⃣ Создание архивов

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

apack имя_архива.формат [список_файлов]

К примеру, команда

apack backup.tgz first second third

создаст в текущей директории архив backup.tgz и запакует в него файлы first, second и third. Причём формат создаваемого архива автоматически определяется из имени.

Создать несколько архивов можно вот так:

apack -e -F .tar.gz dir1 dir2 dir3

В этом примере три директории dir будут упакованы в три разных архива. Ключ -e означает выполнять команду отдельно для каждого аргумента, ключ -F указывает формат создаваемых архивов. Подобным образом эти ключи действуют и в других командах, как будет показано ниже.

3️⃣ Просмотр архивов

Что бы просмотреть содержимое архива введите

als имя_архива

Просмотреть содержимое нескольких архивов:

als -e *.tgz

Что бы вывести на экран содержимое файла, находящегося в архиве, можно использовать команду

acat имя_архива имя_файла_в_архиве

4️⃣ Распаковка архивов

Для распаковки архива используется команда

aunpack имя_архива [имя_файла_в_архиве]

Если в архиве содержится всего один файл, то он будет распакован в текущую директорию. Если же файлов несколько, то будет создана директория совпадающая с именем архива и файлы распакуются в неё. Если вам нужно распаковать архив в другую директорию, то можете её указать после ключа -X:

aunpack -X /tmp archive.zip

Распаковать несколько архивов можно указав ключ -e:

aunpack -e *.tar.gz

5️⃣ Перепаковка архивов

atool также можно использовать для перепаковки архивов в другой формат. Это делается командой

arepack старый_архив новый_архив

При этом старый архив не удаляется. Если вам необходимо перепаковать несколько архивов RAR в формат 7Z, то можно использовать следующую команду

arepack -F .7z -e *.rar

6️⃣ Сравнение архивов

Сравнить два архива можно командой

adiff архив1 архив2

atool использует программу diff для сравнения файлов.

7️⃣ Единая команда

Вместо всех этих команд возможно использовать команду atool с соответствующим ключем:

atool -l вместо als

atool -x вместо aunpack

atool -a вместо apack

atool -c вместо acat

atool -d вместо adiff

atool -r вместо arepack

Возможно, такой вариант кому-то покажется предпочтительным.

Заключение

Как вы могли увидеть, atool это очень простая и, в то же время, мощная программа. Разобравшись с ней один раз вы больше не будете испытывать проблем с запоминанием ключей для множества консольных архиваторов 🎹

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥7
Как разделить большой файл на маленькие части и потом их объединить?

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

📂 Как разделить файл на части:

split --bytes=1024M file.mkv file.part.

В этой команде:

- file.mkv — имя вашего большого файла.
- file.part. — префикс для имен файлов-частей (например, file.part.aa, file.part.ab и так далее).
- --bytes=1024M — размер каждой части (здесь мы выбрали 1024 мегабайта).

🧩 Как объединить файлы в один:

cat file.part.* > file.mkv


📄 Как разбить текстовый файл по строкам:

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

split -l 1000 textfile.txt textfile.part.

Мы разделили исходный текстовый файл, на файлы по 1000 строк в каждом. Объединение файлов выполняется также, как описано в предыдущем пункте.

Заключение

Мы рассмотрели простейшие способы разделения файла на несколько частей с использованием командной строки.

Для разделения файлов используется команда split. Для объединения файлов мы использовали команду cat.

Чтобы получить более подробную информацию по команде split, выполните в терминале:

man split


Так что, не бойтесь работать с большими данными в Linux! 💪

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🤯1
Привилегированные порты

Привилегированные порты - сетевые порты, номера которых находятся в диапазоне от 0 до 1023. Они так называются, поскольку только процессы, выполняемые с правами root user могут быть привязаны к ним. Обычным пользователям запрещено привязываться к таким портам.

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

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

nmap -p <port_number> <host_or_ip>

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥4🤔1
🐧 Пять полезных команд для управления Flatpak в Linux через терминал

Flatpak - это отличный способ установки и управления приложениями в Linux. Вот пять команд, которые помогут вам мастерски обращаться с Flatpak через терминал:

1️⃣ Установка Flatpak: если у вас еще нет Flatpak, выполните эту команду, чтобы установить его:

sudo apt install flatpak   # для Ubuntu/Debian
sudo dnf install flatpak # для Fedora
sudo pacman -S flatpak # для Archlinux

При этом, стоит помнить, что большинство современных Linux-дистрибутивов имеют встроенную поддержку Flatpak. К таким относятся, например, Fedora, Manjaro, Linux Mint.

2️⃣ Установка приложения: чтобы установить приложение из репозитория Flatpak, используйте:

flatpak install название-приложения

Где взять название приложения? Переходим на сайт Flathub и выбираем то, что нужно. После нажатия кнопки Install, появится команда для ввода в терминал (также доступно скачивание установочного пакета, но менеджер приложений вашего дистрибутива должен уметь работать с такими пакетами), где и будет название приложения. Нет желания рыскать по сайтам? Смотрите команду №4.

3️⃣ Обновление приложений: Для обновления всех установленных Flatpak-приложений выполните:

flatpak update

4️⃣ Поиск приложений: если вы хотите найти приложение в репозитории, воспользуйтесь командой поиска:

flatpak search ключевое-слово

5️⃣ Удаление приложений: для удаления приложения используйте:

flatpak uninstall название-приложения

Если при этом вы забыли опять-таки имя приложения, то можете воспользоваться бонусной командой №6 😏

6️⃣ Вывод списка установленных приложения:

flatpak list


Эти команды сделают работу с Flatpak в терминале максимально удобной и эффективной
😐

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15😁2🤯1
Пять GitHub проектов, которые помогут вам стать лучшим инженером DevOps

1️⃣ How they SRE

Подборка общедоступных ресурсов о том, как технологические и технически подкованные организации по всему миру практикуют Site Reliability Engineering (SRE).

▶️https://github.com/upgundecha/howtheysre

2️⃣ Awesome Scalability

Паттерны масштабируемых, надежных и производительных крупномасштабных систем

▶️https://github.com/binhnguyennus/awesome-scalability

3️⃣ DevOps Exercises

Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. Вопросы для интервью по DevOps

▶️https://github.com/bregman-arie/devops-exercises

4️⃣ Test your sysadmin skills

Сборник тестовых вопросов и ответов по Linux Sysadmin. Проверьте свои знания и навыки в различных областях с помощью этих вопросов и ответов.

▶️https://github.com/trimstray/test-your-sysadmin-skills

5️⃣ Awesome Site Reliability Engineering

Составленный список ресурсов по надежности сайта и производственному инжинирингу.

▶️https://github.com/dastergon/awesome-sre

👉 DevOps Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍231
Легкий путь обмена файлами: Transfer.sh для Linux-энтузиастов и системных администраторов

Transfer.sh — это очень удобная и простая штука, которая позволяет обмениваться файлами с помощью curl/wget. И да, это без регистрации и SMS. Лимиты весьма щедрые — до 10 гигабайт на файл, и ваши файлы хранятся на сервере в течение 14 дней.

Что еще круто? Вам доступна возможность зашифровать файл перед отправкой и даже проверить его на наличие вирусов. И вот что интересно: в команде curl можно указать дополнительные заголовки -H "Max-Downloads: 1" -H "Max-Days: 5". Это означает, что файл смогут скачать только один раз, и через пять дней он автоматически удалится. Удобно, правда?

Итак, вопрос — это же не слишком безопасно, так ведь? Да, вы абсолютно правы. Этот сервис подходит скорее для передачи некритичной информации. Не стоит использовать его для чего-то чрезвычайно секретного. Например, его могут использовать системные администраторы для передачи логов заказчикам.

Не забудьте заглянуть на сайт Transfer.sh и изучить все возможности, которые они предоставляют. Там есть много примеров, и вы быстро разберетесь

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121
🐧 Три команды для работы с логами в Linux, которые я использую чаще всего

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

🟢Места хранения логов в Linux

Естественно, место, где будут храниться логи можно определить самостоятельно через конфигурационные файлы. Но мы остановимся на классическом варианте - системной папке:
/var/log/...


Внутри нее могут располагаться как отдельные файлы-логи (имеющие расширение log), так и директории с названиями сервисов внутри которых находятся логи. Есть, естественно, исключения. Например, Docker. У него логи запущенных контейнеров находятся в другом месте:

/var/lib/docker/containers/<id_контейнера>/<id_контейнера>-json.log


Опять-таки, повторюсь, что чаще всего местоположение логов, заданное разработчиками программы или сервиса указывается в конфигурационных файлах и может, при желании, меняться пользователем. Системные логи, чаще всего, хранятся в /var/log.

🟢 Какие виды логов бывают?

Расскажу, опять-таки, про классическую схему того, какие логи бывают.

access.log - содержат данные о доступе к серверу/ресурсу/приложению (например, успешные авторизации)

error.log - содержат данные об ошибках, возникающих при работе с серверами/ресурсами/приложениями.

🔤 <имя_сервиса>.log - содержат данные обо всех взаимодействиях с сервисом (доступ, ошибки, информация и пр.)

Указанные имена логов являются стандартными, конкретный вариант уже зависит от того, как решили разработчики или пользователь. Используя конфигурационные файлы вы можете задать любое имя для файла с логами. Теперь уже перейдем к командам.

1️⃣ Команда cat для просмотра содержимого лога

При использовании этой команды в терминал будет выведено все содержимое лога:

cat /var/log/<имя_лога>.log


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

2️⃣ Команда tail -f для вывода содержимого лога в режиме реального времени

Напомню, что команда tail выводит по-умолчанию 10 последних строк содержимого файла. Но при использовании ключа -f в выхлоп будут попадать строки лога в режиме реального времени.

tail -f /var/log/<имя_лога>.log


Удобно запустить такую команду и начать тестирование сервиса или программы, чтобы сразу видеть влетающую информацию.

3️⃣ Команда echo -n > для зануления логов

Бывает так, что логи разрастаются до неимоверных размеров. Решается это настройкой так называемой ротации (про нее расскажу отдельно в следующий раз), но если лог разросся до размеров, которые нужно занулить здесь и сейчас, то указанная команда подойдет в самый раз:

echo -n > /var/log/<имя_лога>.log


Почему нельзя решить проблему простым удалением лога при помощи rm? Некоторые сервисы используют проверку наличия файла для записи лога и если он отсутствует, то считают это ошибкой и перестают работать. Поэтому вместо кажущегося очевидного удаления файла лога нужно его просто занулить.

Работа с логами не составляет каких-то сложностей. Помимо указанных выше команд можно использовать практически все другие инструменты, применяемые к работе с файлами в Linux. В логах можно искать информацию, сортировать ее вывод в терминал, применять редактор sed и так далее. Чтобы не утруждать пользователя или администратора просмотров логов вручную существуют автоматизированные системы сбора и обработки логов, которые позволяют собирать информацию сразу с нескольких серверов.

Поддержите пост лайком, если он оказался полезным 🤝

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍403
Как вывести лог Docker за определенное время? 🗓

Чуть ранее мы говорили про работу с логами. В том сообщении я упоминал про Docker и то, что в его случае логи работы контейнеров хранятся в JSON-файлах и не совсем удобны для ознакомления. Особенно, если контейнер работает давно и за это время в логи нападало много всего и он весит под сотню мегабайт. Поэтому логичнее будет выводить содержимое лога Docker в отдельный файл и делать это за определенное время. Как? Расскажу ниже 👇

1️⃣ Вывод списка запущенных контейнеров

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

docker ps

После ввода команды вы увидите удобный выхлоп, где нас интересует имя или ID нужного контейнера.

2️⃣ Вывод логов конкретного контейнера

Здесь есть два способа: менее удобный и совсем неудобный. Где какой решайте сами 🤷‍♂️ Первый способ заиметь доступ к логу контейнера указан был в сообщении про работу с логами, где я указывал место хранения логов Docker:

/var/lib/docker/containers/<id_контейнера>/<id_контейнера>-json.log

Но, как говорилось ранее, вы получаете лютый JSON, где вообще ничего непонятно. Второй способ - использовать команду для вывода логов конкретного контейнера:

docker logs <имя_или_ID_контейнера>

По сути, команда вываливает в терминал содержимое JSON-файла из способа №1. Что делать дальше с этой информацией решает каждый сам, кому-то может оно и поможет, ну а мы идем дальше...

3️⃣ Сохраняем логи за определенный период в отдельный файл

Совместим все, что узнали в пунктах выше и приправим ключом --since, который позволяет задать временной отрезок, с которого будет выведен лог. Вдобавок используя перенаправление вывода сохраним это все в отдельный файл, чтобы потом его изучить:

docker logs <имя_или_ID_контейнера> --since 60m > mydocker.log

Данный пример выведет содержимое лога контейнера Docker за последний час. Ну а что делать, если нужно вывести данные с прошлого месяца? Все просто!

docker logs <имя_или_ID_контейнера> --since YYYY-MM-DD > mydocker.log

Здесь YYYY - год (2023, например), MM - месяц (09) и DD - день (21). Порядок идет именно такой, так как все эти ваши европейцы и американцы, создавшие Linux и большую часть того, что связано с программированием, используют такой формат даты. Всю эту информацию перенаправляем в файл с расширением log, который потом можно использовать как душе угодно.

4️⃣ Добавляем временную метку в логи

Но даже после использования команды в п. 3 у вас получится файл, в котором все будет в кучу и не поймешь когда и во сколько какое событие, описанное в логе произошло. Поэтому нужно добавить временную метку, делается это при помощи ключа -t.

docker logs <имя_или_ID_контейнера> --since YYYY-MM-DD -t > mydocker.log

Вот теперь-то вы получите информативный лог о том, что происходило с вашим сервисом внутри контейнера!

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

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥41
Kubernetes-examples

Это репозиторий содержит множество примеров Kubernetes

👉 https://github.com/AdminTurnedDevOps/kubernetes-examples

👉 DevOps Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍3
🐧 Управление процессами в Linux: как держать систему под контролем

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

Процесс — это программа, запущенная в системе. У каждого процесса есть уникальный идентификатор (PID), родительский процесс (PPID) и состояние (активный, спящий и т. д.).

Основные действия с процессами:
🔹Мониторинг — отслеживание текущих процессов.
🔹Управление — остановка, возобновление, изменение приоритетов.
🔹Планирование — настройка задач для автоматического выполнения.

Команды для работы с процессами

1️⃣Мониторинг процессов

🟢 Просмотр активных процессов:
ps aux

Выводит список всех процессов с подробной информацией:
🔹USER — пользователь, запустивший процесс.
🔹PID — уникальный идентификатор процесса.
🔹%CPU / %MEM — использование процессора и памяти.
🔹COMMAND — название программы.

🟢 Интерактивный мониторинг:
top

Показывает процессы в реальном времени. Нажмите q, чтобы выйти.

🟢 Упрощенная альтернатива:
htop

Если не установлено, добавьте:
sudo apt install htop


2️⃣ Управление процессами

🟢 Завершение процесса:
kill <PID>

Например:
kill 1234

Чтобы принудительно завершить процесс:
kill -9 <PID>


🟢 Остановка и возобновление:

🔹Остановить процесс:
kill -STOP <PID>

🔹Возобновить процесс:
kill -CONT <PID>


🟢 Изменение приоритета процесса:

🔹Проверить приоритет (niceness):
ps -o pid,ni,cmd -p <PID>

🔹Изменить приоритет (чем ниже значение, тем выше приоритет):
renice -n 10 -p <PID>


3️⃣ Планирование задач

🟢 Запуск в фоне: Если команда занимает много времени, добавьте & в конце:
long_running_command &

Узнать PID фонового процесса:
jobs -l


🟢 Отложенный запуск: Используйте at, чтобы запланировать выполнение команды:
echo "backup.sh" | at 02:00

Если at не установлен:
sudo apt install at


🟢Периодические задачи: Для регулярных задач используйте cron:
1. Открыть редактор crontab:
crontab -e

2. Добавить задачу (пример: запуск каждую минуту):
* * * * * /path/to/script.sh


⚡️ Советы

Используйте htop для удобной работы с процессами, если командная строка кажется сложной.
Команда pkill позволяет завершить процессы по имени:
pkill firefox

Следите за потреблением ресурсов с помощью iotop (для ввода-вывода) и nmon (общий мониторинг).

Заключение

Управление процессами — это важнейшая часть работы в Linux. Знание этих инструментов позволит вам не только следить за состоянием системы, но и эффективно решать проблемы производительности. 😐

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍106