Admin Guides | Сисадмин
11.4K subscribers
1.23K photos
19 videos
34 files
558 links
Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов.

Админ, реклама: @Ak_Mihail
Биржа: https://telega.in/c/admguides

РКН: https://kurl.ru/nQejS
Download Telegram
Senior-разработчик создал крутейший канал про SQL

Благодаря простым картинкам даже новичок научится разрабатывать приложения с использованием баз данных.

Присоединяйтесь: @SQL
👍8👎1🤔1
Что такое make-файл и как он работает?

Make-файл — это текстовый файл, который служит для автоматизации процесса сборки программ.

В нем описываются зависимости между файлами исходного кода и исполняемыми файлами, а также команды для их компиляции. 


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

Основные компоненты make-файла

1️⃣Цель (Target) — это файл или абстрактное действие, которое должно быть выполнено. Например, цель может быть именем исполняемого файла.
2️⃣ Зависимости (Dependencies) — это файлы, от которых зависит цель. Обычно это исходные файлы, которые необходимы для создания цели.
3️⃣ Рецепт (Recipe) — это команды, которые make выполняет для достижения цели. Команды могут включать в себя компиляцию, линковку или другие действия.

Пример простого make-файла:

say_hello:
echo "Hello, World!"


Здесь say_hello — это цель, а echo "Hello, World!" — рецепт. Запуск команды make приведет к выводу строки в терминале:

Hello, World!


Как работает make-файл?

При запуске команды make, утилита ищет в каталоге файл с именем Makefile или makefile.

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

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

.PHONY: all clean

all: hello

hello: hello.o
gcc hello.o -o hello

hello.o: hello.c
gcc -c hello.c

clean:
rm -f *.o hello


all — это абстрактная цель, которая вызывает другие цели (в данном случае — hello).
hello — цель для создания исполняемого файла hello из объектного файла hello.o.
clean — цель для удаления временных файлов.

Теперь при запуске make будут выполнены команды для компиляции и сборки программы, а команда make clean удалит все созданные артефакты.

Делать продолжение?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47🔥51
Нас 10.000✈️ Спасибо каждому кто подписался на этот канал. Дальше больше🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉46👍9🍾3👎1👨‍💻1
Как коллеги видят друг друга 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
😁30👏3🔥1
Усложненные примеры использования make-файлов

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

Это делает make-файл гибким инструментом для управления даже большими проектами.

Переменные

Make-файл позволяет использовать переменные, чтобы повторно использовать одно и то же значение в нескольких местах. Переменные объявляются с помощью символа =.

Пример:

CC = gcc
CFLAGS = -Wall -g

program: program.o utils.o
$(CC) $(CFLAGS) program.o utils.o -o program


Здесь $(CC) и $(CFLAGS) — это переменные, которые можно использовать многократно. Переменная CC задаёт компилятор, а CFLAGS определяет флаги компиляции.

Шаблоны

Шаблоны (или pattern rules) позволяют создавать универсальные правила, которые применяются к разным файлам с одинаковыми расширениями.

Вот пример шаблона для компиляции всех .c файлов в объектные файлы .o:

%.o: %.c
gcc -c $< -o $@


% — это подстановочный символ, который соответствует любой строке.
$< — это первый файл в списке зависимостей (в данном случае .c файл).
$@ — это текущая цель (т.е. объектный файл .o).

Этот шаблон означает, что любой .c файл можно скомпилировать в соответствующий .o файл одной и той же командой.

Пример с несколькими целями

Рассмотрим более сложный пример make-файла, который компилирует несколько программ и включает команды для их очистки:

.PHONY: all clean

CC = gcc
CFLAGS = -Wall -g
SRCS = main.c utils.c file.c
OBJS = $(SRCS:.c=.o)

all: program1 program2

program1: main.o utils.o
$(CC) $(CFLAGS) $^ -o $@

program2: file.o utils.o
$(CC) $(CFLAGS) $^ -o $@

%.o: %.c
$(CC) $(CFLAGS) -c $<

clean:
rm -f $(OBJS) program1 program2


Здесь:

SRCS — это список всех исходных файлов .c.
OBJS — это список всех объектных файлов, полученных из .c файлов с помощью подстановки шаблона $(SRCS:.c=.o).
all — это цель, которая компилирует обе программы program1 и program2.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
VPS-сервер с зарубежным IP

Разверни VPS-сервер в 9 локациях по всему миру менее чем за 1 минуту🚀

🔸Удобная панель управления
🔹Серверы 2U SuperMicro, Cisco UCS B200 M5
🔸Процессоры Intel Xeon Gold
🔹ЦОДы на 4 континентах
🔸Высокий uptime
🔹24/7 поддержка
🔸Соответствие ФЗ РФ №152

А что еще нужно?

Только ПРОМОКОД «ADMGUIDES», который превратит 50₽ в 1000₽!

Как активировать промокод?

1. Зарегистрируйтесь в панели управления Serverspace
2. Перейдите на страницу «Пополнение баланса»
3. Активируйте промокод ADMGUIDES во вкладке «Промокод»
4. Пополните баланс на 50₽ и получите 1000 бонусных рублей на любые услуги Serverspace!

Внимание: активировать промокод необходимо перед пополнением баланса.

Serverspace - международный облачный провайдер, предлагающий автоматическое развертывание виртуальной инфраструктуры на базе Windows, Linux и российских ОС из любой точки мира менее чем за 1 минуту.

Реклама ООО «ИТГЛОБАЛКОМ ЛАБС»
ИНН 7841483359
Erid CQH36pWzJqDLvVfBigsFypEqLgw4ssLMe85Pii4tQKgqkG
👍51👎1🔥1👌1
Команда gzip в Linux

Утилита gzip — это не только один из самых популярных инструментов для сжатия файлов, но и мощный инструмент с множеством продвинутых возможностей.

Она позволяет эффективно управлять сжатыми данными, оптимизировать уровень сжатия и использовать системные ресурсы максимально эффективно.

В этом посте мы рассмотрим более сложные сценарии использования gzip в Linux.

Сжатие с оптимизацией: контроль уровня сжатия
У gzip есть возможность указать уровень сжатия, от 1 до 9:

-1 или --fast: максимальная скорость с минимальной степенью сжатия.
-9 или --best: максимальная степень сжатия, но с более высокой нагрузкой на процессор.

Чтобы сжать файл с максимальной степенью сжатия, выполните:

gzip -9 имя_файла


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

Сжатие через стандартный ввод

Команда gzip может сжимать данные не только из файлов, но и через стандартный ввод. Например, можно сжать вывод другой команды:

mysqldump имя_базы_данных | gzip > backup.sql.gz


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

Использование нескольких процессоров: pigz

Хотя классический gzip использует только одно ядро процессора для сжатия, можно воспользоваться параллельной версией утилиты — pigz.

Эта версия распределяет задачу сжатия на несколько ядер, что значительно ускоряет процесс:

pigz имя_файла


pigz поддерживает все те же параметры, что и gzip, но работает быстрее на многоядерных системах.

Просмотр содержимого сжатого файла

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

gzip -l имя_файла.gz


Вывод покажет размер до и после сжатия, степень сжатия и имя исходного файла. Для более детализированного отчета добавьте параметр -v:

gzip -lv имя_файла.gz


Этот способ полезен для оценки эффективности сжатия файлов перед их распаковкой.

Рекурсивное сжатие/распаковка файлов

Для сжатия всех файлов в каталоге и его подкаталогах используйте рекурсивную опцию -r:

gzip -r имя_каталога


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

Для распаковки всех файлов в каталоге рекурсивно, используйте:

gzip -dr имя_каталога


Работа с архивами tar.gz

Часто gzip используется вместе с командой tar, чтобы сжать архивы. Например:

tar -czf архив.tar.gz имя_каталога


Здесь -c создает архив, -z указывает на использование сжатия через gzip, а -f определяет имя файла архива.

Для распаковки архива:

tar -xzf архив.tar.gz


Пример эффективного сжатия данных

Сжать лог-файлы перед отправкой по сети:

cat /var/log/syslog | gzip -9 | nc -w 3 192.168.1.10 8888


Эта команда сжимает лог и отправляет его по сети с помощью netcat.
👍14🥴1
Любая крупная БД рано или поздно начинает испытывать проблемы с производительностью.

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

Как же их отслеживать и оптимизировать?
Узнаете на открытом вебинаре «Как оптимизировать производительность запросов в PostgreSQL?»

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

Будет интересно: аналитикам, инженерам и разработчикам БД, бэкенд-специалистам, тимлидам и проект-менеджерам.
Спикер: Алексей Железной, преподаватель OTUS и старший инженер данных.
Бонус! Всем участникам – скидка 5% на любой курс OTUS и полезные гайды.
16 октября, 18:30 МСК, Бесплатно
Записаться на событие - https://otus.pw/RVZH/?erid=LjN8KBi2X

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
👍3👎1🔥1😁1
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


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

Ответ: Для этого подойдет команда lsof. Она помогает быстро определить, какие процессы используют конкретный порт:

lsof -i :80


1️⃣ lsof -i :80 — выводит список процессов, связанных с портом 80, включая PID, имя процесса и состояние.

2️⃣ Чтобы увидеть состояние порта, можно использовать ss:

ss -tuln | grep ':80'


Этот подход полезен для диагностики, особенно при решении проблем с занятыми портами, которые могут блокировать сетевые сервисы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥21
Ушёл из жизни создатель XMODEM и пионер компьютерных коммуникаций Уорд Кристенсен

11 октября 2024 года на 79-м году скончался Уорд Кристенсен — инженер и программист, известный как создатель первой в мире открытой BBS (bulletin board system) и разработчик протокола XMODEM для передачи файлов через модем.

Кристенсен работал в IBM с 1968 до 2012 года. Вместе с Рэнди Суессом в 1978 году они запустили BBS, создав основу для современных онлайн-сообщений.

XMODEM, разработанный Кристенсеном, стал важнейшим протоколом для передачи данных в эпоху модемов.


За свою работу он получил награды Дворака и Pioneer Award от EFF. В 2003 году Чикаго объявил 16 февраля Днём BBS в его честь.
🫡52👍4🔥2😢2
Поднимаем NFS сервер на Ubuntu

Сегодня расскажем, как настроить NFS сервер на Ubuntu 14.04.1. Разберёмся с основами работы протокола NFS и пройдём пошаговую настройку.


NFS (Network File System) — это протокол, который позволяет удалённым компьютерам монтировать и использовать директории как локальные.

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

NFS использует клиент-серверную архитектуру. Сервер с установленным пакетом NFS предоставляет доступ к своим директориям, а клиенты подключаются к нему через сеть.

Передача данных происходит через пакеты протокола RPC (Remote Call Procedure), что делает работу системы надёжной даже при сбоях сети: при восстановлении соединения передача данных продолжается с того места, где она прервалась.

Настройка NFS

1️⃣ Установка пакета NFS

На сервере, который будет предоставлять директории для доступа, установим необходимые пакеты:

sudo apt-get update
sudo apt-get install nfs-kernel-server


2️⃣ Создание директории для общего доступа

Создадим директорию, которую будем расшаривать:

sudo mkdir /var/nfs


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

sudo chown nobody:nogroup /var/nfs


3️⃣ Редактирование конфигурационного файла

Откроем файл конфигурации /etc/exports для редактирования:

sudo nano /etc/exports


Добавим строку:

/var/nfs    10.10.0.10/24(rw,sync,no_subtree_check)


Здесь:

• /var/nfs — директория для общего доступа,
10.10.0.10/24 — IP-адрес клиента (или сеть), которому предоставляется доступ,
• rw — разрешение на чтение и запись,
• sync — запись изменений на диск до ответа клиенту,
• no_subtree_check — отключение проверки подкаталогов (ускоряет доступ к файлам).

4️⃣ Применение настроек и запуск сервиса
Чтобы применить конфигурацию и запустить сервис NFS, выполните следующие команды:

sudo exportfs -a
sudo service nfs-kernel-server start


Теперь ваш NFS сервер готов, и клиенты смогут подключаться к указанной директории. Если потребуется подключить несколько клиентов, просто добавьте их IP-адреса в файл конфигурации.

Подключение клиента

На стороне клиента (например, на другом сервере с Ubuntu), можно подключить расшаренную директорию так:

sudo mount 10.10.0.10:/var/nfs /mnt


Где /mnt — локальная точка монтирования, которая будет содержать данные, хранящиеся на NFS сервере.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥5
Поддерживайте их 🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
34👍4🤗4
Установка и настройка ntopng на CentOS 7

В посте рассмотрим установку и настройку ntopng — приложения для анализа сетевого трафика, на CentOS 7.

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

По умолчанию, ntopng недоступен в стандартных репозиториях CentOS 7, поэтому сначала нужно добавить необходимые репозитории.

Установите EPEL репозиторий:

sudo yum install epel-release


Создайте репозиторий ntop. Для этого создайте файл ntop.repo:

sudo nano /etc/yum.repos.d/ntop.repo


Добавьте в файл следующие строки:

[ntop]
name=ntop packages
baseurl=https://www.nmon.net/centos-stable/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://www.nmon.net/centos-stable/RPM-GPG-KEY-deri

[ntop-noarch]
name=ntop packages
baseurl=https://www.nmon.net/centos-stable/$releasever/noarch/
enabled=1
gpgcheck=1
gpgkey=https://www.nmon.net/centos-stable/RPM-GPG-KEY-deri


Для создания файла можно использовать любой текстовый редактор. Если nano не установлен, его можно установить командой:

yum install nano -y


Установите ntopng и redis:

sudo yum --enablerepo=epel install redis ntopng -y


2️⃣ Запуск сервисов и настройка

После установки ntopng нужно установить пакет hiredis-devel и запустить сервисы redis и ntopng.

Установите пакет hiredis-devel:

sudo yum --enablerepo=epel install hiredis-devel


Запустите и настройте автозапуск сервисов:

sudo systemctl start redis.service
sudo systemctl enable redis.service

sudo systemctl start ntopng.service
sudo systemctl enable ntopng.service


Продолжим?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥172🗿1
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое “Canary Deployment” и чем этот подход полезен?

Ответ: Canary Deployment — это стратегия развертывания, при которой новая версия приложения выпускается для небольшой группы пользователей или серверов (канареек) перед её полным развертыванием. Это позволяет проверить стабильность и работоспособность новой версии на небольшой части трафика, минимизируя риски при возникновении проблем.

Преимущества:

• Быстрая идентификация багов на ранней стадии.
• Минимальный риск полного сбоя системы.
• Возможность отката без значительного влияния на всех пользователей.
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍4
Какой параметр в файле /etc/sysctl.conf включает пересылку пакетов через хост в IPv4?
Anonymous Quiz
3%
net.ipv4.tcp_syncookies
21%
net.ipv4.conf.default.forwarding
74%
net.ipv4.ip_forward
2%
net.ipv4.conf.all.rp_filter
👍8
Установка и настройка ntopng на CentOS 7
Часть 2


Продолжаем настройку ntopng CentOS 7

Проверьте статус ntopng:

sudo systemctl status ntopng


Превратите ntopng в бесплатную версию, отредактировав конфигурационный файл:

sudo nano /etc/ntopng/ntopng.conf


Измените строку:

-G=/var/tmp/ntopng.pid


на:

-G=/var/tmp/ntopng.pid
--community


Сохраните изменения и перезапустите ntopng:

sudo systemctl restart ntopng


3️⃣ Настройка фаерволла

Откройте порт 3000 для доступа к ntopng:

sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload


4️⃣ Первый запуск ntopng

Теперь вы можете получить доступ к ntopng через браузер, перейдя по адресу:

https://yourhostip:3000


По умолчанию, логин и пароль — admin. После первого входа система предложит вам изменить пароль.

На дэшборде ntopng вы сможете увидеть информацию о сети, хостах, трафике и многом другом.

Исследуйте интерфейс и попробуйте настроить мониторинг по своим нуждам.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎1
Media is too big
VIEW IN TELEGRAM
Как Yandex Cloud делает Managed Service for Kubernetes?

В этом выпуске «Как мы делаем Yandex Cloud» обсуждаем работу над Managed Service for Kubernetes. Специальный гость — Александр Хаустов, руководитель подразделения Kubernetes в Yandex Cloud.

О чём поговорили?

👉 Как обеспечить стабильность инфраструктуры K8s, где более 4 тысяч кластеров и несколько сотен тысяч ядер?

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

👉 Какие компетенции должны быть у разработчика в команде облачного Kubernetes?

Больше о том, как делаем мы Yandex Cloud в канале.
👍3👎1
Релиз LibreSSL 4.0.0

14 октября 2024 года вышел релиз криптографической библиотеки LibreSSL 4.0.0, форка OpenSSL, разрабатываемого с 2014 года. 


Библиотека нацелена на модернизацию кодовой базы и повышение безопасности. Основная разработка ведется в рамках OpenBSD, с доступными сборками для Linux, FreeBSD и Windows.

В новой версии проведены значительные изменения: очистка реализаций MD4 и MD5, удаление неиспользуемых методов DSA и изменения в протоколе libtls для игнорирования неподдерживаемых TLSv1.1 и TLSv1.0.

Основные изменения и улучшения в LibreSSL 4.0.0:

Добавлена начальная поддержка Emscripten в сборках CMake.
Удалён слой совместимости timegm(), заменённый на OPENSSL_timegm().
Очищены части каталога conf и исправлены утечки памяти.
Разделён анализ и обработка расширений TLS для предопределённого порядка вызова.
Удалены реализации устаревших шифров и объединены многофайловые реализации в один или два файла C.
Переписаны функции преобразования BN и внутренние компоненты запроса сертификации.
Удалён get_cipher из SSL_METHOD.
Устранены проблемы с поддержкой Windows для дат после 2038 года.

LibreSSL 4.0.0 является значительным шагом вперёд, обеспечивая более безопасную и надёжную платформу для криптографических операций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍53
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Как проверить, какие службы запущены на сервере и какие порты они используют?

Ответ: Для этого можно использовать команду netstat. Она предоставляет информацию о сетевых подключениях и состоянии портов:

netstat -tuln


1️⃣netstat -tuln — выводит список всех TCP и UDP портов, на которых запущены службы, а также их статус.

2️⃣ Чтобы отфильтровать вывод по конкретному порту, например, 443, используйте grep:

netstat -tuln | grep ':443'


Этот подход помогает быстро определить, какие службы слушают на конкретных портах, что важно для диагностики сетевых проблем и управления безопасностью.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏19👍4🤔32