Admin Portal | Сисадмин
Открыть в Telegram
Присоединяйтесь к нашему каналу и погрузитесь в мир для системного администратора Связь: @devmangx
Больше7 063
Подписчики
+2424 часа
+867 дней
+39530 дней
Архив постов
Быстрый совет по Linux: как найти большие файлы
Заканчивается место на диске и непонятно, что его занимает?
Используйте команду:
find / -type f -size +500M 2>/dev/null
Она найдёт файлы размером больше 500 МБ во всей файловой системе. 2>/dev/null скрывает сообщения об ошибках доступа, оставляя в выводе только найденные файлы.
Размер и область поиска можно менять под свои задачи:
find / -type f -size +100M 2>/dev/null
find / -type f -size +1G 2>/dev/null
find /home -type f -size +50M 2>/dev/null
find /var -type f -size +200M 2>/dev/null
Полезно, когда нужно быстро найти, какие файлы занимают место на сервере.
@SysAdmin_PortalБыстрый совет по Linux
Нужно сохранить вывод команды в файл, но при этом видеть его в терминале? Используй
tee.
command | tee filename
Например:
df -h | tee config_old.txt
Команда выведет информацию на экран и одновременно сохранит её копию в файл.
Можно использовать с любыми командами:
free -h | tee memory-report.txt
ps aux | tee processes.txt
ip addr | tee network.txt
ls -l | tee files.txt
Удобный способ сохранять результаты выполнения команд, не теряя их из виду в терминале.
@SysAdmin_PortalKubernetes Tip: как сохранить реальный IP-адрес клиента
В некоторых случаях для сетевых политик безопасности, мониторинга трафика и приложений, работающих не по HTTP, важно знать настоящий IP-адрес клиента.
По умолчанию Kubernetes Services типов
NodePort и LoadBalancer используют настройку externalTrafficPolicy: Cluster. В этом случае Pod, получающий трафик, может видеть IP-адрес узла Kubernetes вместо исходного IP-адреса клиента.
Чтобы сохранить исходный IP, установите:
spec: externalTrafficPolicy: LocalЭта настройка указывает Kubernetes направлять внешний трафик только в Pod'ы этого Service, расположенные на том же узле, который получил запрос. Таким образом, исходный IP-адрес клиента сохраняется. Но есть нюанс: если на узле нет локального Pod'а, обслуживающего этот Service, трафик, поступивший на такой узел, будет отброшен, а не перенаправлен на другой узел. Правильно настроенный балансировщик нагрузки может использовать проверки работоспособности (health checks), чтобы не отправлять трафик на такие узлы. Важно: сохранение IP зависит и от балансировщика нагрузки. Сетевой балансировщик (Network Load Balancer) может сохранять исходный IP клиента — в зависимости от конфигурации. HTTP-прокси и балансировщики на уровне приложений обычно создают новое соединение с приложением, поэтому Pod может видеть IP-адрес самого балансировщика. В таком случае исходный IP клиента передаётся в HTTP-заголовке, например
X-Forwarded-For. Его можно использовать для логирования, ограничения частоты запросов (rate limiting) и других задач.
@SysAdmin_PortalDevOps инструмент недели: Kubetail
Разбирать логи в Kubernetes бывает непросто: приходится переключаться между подами, запускать
kubectl logs и искать причину ошибки среди множества реплик приложения.
Kubetail open-source инструмент для просмотра логов Kubernetes в реальном времени. Он собирает логи из нескольких подов в одном интерфейсе, упрощая отладку приложений.
Что умеет:
• Показывать логи нескольких подов и контейнеров одновременно.
• Обновлять временную шкалу при появлении, остановке и замене подов.
• Фильтровать логи по временному диапазону, зоне доступности, архитектуре CPU и узлу.
• Переключаться между несколькими кластерами через десктопное приложение.
Полезный инструмент для тех, кто работает с Kubernetes и хочет тратить меньше времени на поиск ошибок в логах.
GitHub: https://github.com/kubetail-org/kubetail
@SysAdmin_PortalLinux Tip: сортируй строки в файле одной командой
Нужно отсортировать строки текстового файла по алфавиту?Используй команду
sort.
sort names.txtКоманда отсортирует строки и выведет результат в терминал, не изменяя исходный файл. Можно использовать её с любыми текстовыми файлами:
sort users.txt sort cities.txt sort products.txt sort words.txtЧтобы сохранить результат в новый файл:
sort names.txt > sorted-names.txt
sort пригодится для упорядочивания данных перед поиском, сравнением файлов и дальнейшей обработкой.
Полезный флаг: sort -r names.txt — сортировка в обратном порядке.
@SysAdmin_PortalLinux Tip: следи за изменениями в терминале автоматически
Нужно отслеживать загрузку диска, использование памяти или запущенные процессы в реальном времени? Используй команду
watch.
watch df -hКоманда будет выполнять
df -h каждые 2 секунды и автоматически обновлять вывод. Чтобы остановить мониторинг, нажми Ctrl + C.
Другие полезные примеры:
watch free -h
watch date
watch ls -l
watch "ps aux | grep nginx"
watch "ip addr"
watch пригодится для мониторинга дискового пространства, оперативной памяти, процессов и сетевых интерфейсов без необходимости вручную повторять команды.
Полезный флаг: watch -n 1 df -h — обновлять данные каждую секунду.
@SysAdmin_PortalLinux-совет: как определить тип файла
Нашли файл с непонятным расширением или вообще без него? Выполните:
file filenameНапример:
file mdfiles.zip
file script.py
file config_new.txt
file nohup.out
Команда анализирует содержимое и признаки формата, поэтому может распознать архив, изображение, исполняемый файл или текст даже без расширения.
Полезно, чтобы понять, с чем вы работаете, перед открытием файла.
@SysAdmin_PortalLinux-совет: как извлечь один столбец из файла
Чтобы вывести второе поле каждой строки, разделённой запятыми:
cut -d',' -f2 ~/Desktop/members.csv
• -d',' — задаёт запятую как разделитель.
• -f2 — выбирает второе поле.
@SysAdmin_PortalLinux-совет: как убрать повторяющиеся строки
Команда
uniq убирает только соседние дубликаты:
uniq names.txtЧтобы удалить повторы независимо от их расположения, сначала отсортируйте строки:
sort names.txt | uniq
Ещё несколько полезных вариантов:
# Убрать дубликаты одной командой
sort -u names.txt
# Посчитать количество вхождений каждой строки
sort fruits.txt | uniq -c
# Показать только строки, которые повторяются
sort names.txt | uniq -d
Результат выводится в терминал — исходный файл не меняется. Учтите, что sort изменяет порядок строк.
@SysAdmin_PortalDNAT: как трафик попадает в контейнеры и Pod’ы
DNAT (Destination NAT) — это изменение адреса назначения пакета: IP и, при необходимости, порта.
Например, приложение внутри Docker-контейнера слушает порт
80. В обычной bridge-сети с NAT его приватный IP по умолчанию недоступен клиентам за пределами хоста.
Публикуем порт:
docker run -p 8080:80 nginx
Теперь клиент обращается к IP хоста на порту 8080. На хосте адрес назначения пакета меняется на IP контейнера и порт 80, после чего пакет направляется в контейнер. Это и есть DNAT.
В Kubernetes тот же принцип используется для трафика Service. Когда kube-proxy работает в режиме iptables, правила DNAT перенаправляют запрос с IP и порта Service на IP выбранного Pod’а и его targetPort.
@SysAdmin_PortalSteampipe: SQL-запросы к облачной инфраструктуре
Какие ресурсы остались без обязательных тегов? Есть ли публично доступные S3-бакеты? В каких Kubernetes namespaces отсутствуют NetworkPolicies?
Для ответа необязательно переключаться между консолями и писать отдельные скрипты. Steampipe — open-source инструмент, который позволяет запрашивать данные из AWS, Kubernetes и других сервисов с помощью SQL.
Через плагины он обращается к API сервисов и представляет данные в виде таблиц. Можно фильтровать ресурсы, объединять результаты и проверять инфраструктуру привычными запросами.
Полезен для инвентаризации, поиска ошибок конфигурации и разовых проверок безопасности.
Руководство по Steampipe
@SysAdmin_Portal
Linux-совет: замена символов с помощью
tr
Чтобы перевести латинские буквы в верхний регистр, выполните:
echo "hello linux" | tr 'a-z' 'A-Z'
Результат: HELLO LINUX.
Ещё несколько примеров:
# Перевести в нижний регистр
echo "HELLO" | tr 'A-Z' 'a-z'
# Заменить запятые пробелами
echo "a,b,c" | tr ',' ' '
# Обработать текст из файла
tr 'a-z' 'A-Z' < input.txt
tr читает стандартный ввод и выводит преобразованный текст. Исходный файл при этом не меняется.
@SysAdmin_PortalСовет по Linux: как разбить большой файл на части
Используйте
split, указав количество строк в каждой части:
split -l 100 names.txt
Если в names.txt 250 строк, появятся три файла:
• xaa — строки 1–100.
• xab — строки 101–200.
• xac — строки 201–250.
Исходный файл останется без изменений. Проверить количество строк:
wc -l x*
Можно задать собственный префикс для новых файлов:
split -l 100 names.txt part_
Тогда части получат имена part_aa, part_ab, part_ac. Удобно для обработки больших списков, датасетов и логов.
@SysAdmin_PortalKubernetes: от первых команд до production
Уметь запускать
kubectl apply — только начало. Для работы с production-кластерами важно понимать их устройство, уметь развёртывать приложения, обеспечивать надёжность и настраивать безопасность.
В этой дорожной карте изучения Kubernetes собраны:
• Знания, которые пригодятся перед стартом.
• Способы получить бесплатные облачные кредиты для первого кластера.
• Ключевые концепции Kubernetes.
• Практики обеспечения надёжности и безопасности.
• Полезные ресурсы для обучения.
Пошаговый маршрут для тех, кто хочет перейти от выполнения команд к осознанной работе с кластерами.
https://devopscube.com/learn-kubernetes-complete-roadmap/
@SysAdmin_PortalБыстрый совет по Linux
Если у вас есть данные в нескольких файлах и нужно объединить их построчно, используйте команду:
paste file1 file2Например:
paste name.txt age.txt
Команда объединит соответствующие строки из обоих файлов в один вывод, разделяя значения табуляцией.
Другие примеры:
paste users.txt emails.txt
paste cities.txt countries.txt
paste file1.txt file2.txt
Полезно для объединения связанных данных, сравнения файлов и создания простых отчётов прямо в терминале.
@SysAdmin_PortalСовет по Linux: как записать текст в файл
Используйте
echo и перенаправление вывода:
echo "Привет, Linux!" > hello.txt
Команда создаст файл hello.txt и запишет в него текст. Посмотреть содержимое:
cat hello.txt
Другие полезные примеры:
echo "Welcome" > welcome.txt # Создать или перезаписать файл
echo "Новая строка" >> notes.txt # Добавить строку в конец
echo "$HOME" # Показать путь к домашнему каталогу
echo "$PATH" # Показать каталоги поиска исполняемых файлов
> перезаписывает содержимое файла, а >> дописывает в конец. Если файла нет, оба варианта создадут его.
@SysAdmin_PortalСовет по Linux: как посмотреть сообщения ядра
Подключили USB-устройство или разбираетесь с проблемой оборудования, драйверов или загрузки? Выполните:
dmesg | tailКоманда покажет последние 10 строк сообщений ядра: обнаружение устройств, работу драйверов и системные события. Другие полезные варианты:
dmesg | grep -i usb # Сообщения об USB
dmesg | grep -i error # Строки со словом error
dmesg | grep -i ethernet # Строки с упоминанием Ethernet
dmesg -T # Дата и время в читаемом формате
Флаг -i отключает учёт регистра при поиске. Если доступ к журналу ограничен, запускайте dmesg через sudo.
@SysAdmin_Portalkube-green: отправляем dev и staging спать по расписанию
Тестовые окружения часто работают круглосуточно, хотя ночью и на выходных ими никто не пользуется. Поды продолжают занимать ресурсы, а инфраструктура — стоить денег.
kube-green — open-source оператор Kubernetes, который останавливает ненужные нагрузки по расписанию и восстанавливает их к началу рабочего дня.
Что умеет:
• Масштабировать Deployments и StatefulSets до нуля.
• Приостанавливать запуск CronJobs.
• Восстанавливать количество реплик по расписанию.
• Учитывать дни недели и часовые пояса.
• Исключать ресурсы по именам или меткам.
• Работать с пользовательскими ресурсами через патчи.
Экономия зависит от инфраструктуры: остановка подов освобождает ресурсы, но для снижения расходов на вычислительные узлы может потребоваться их автоматическое масштабирование.
https://github.com/kube-green/kube-green
@SysAdmin_Portal
kube-green: отправляем dev и staging спать по расписанию
Тестовые окружения часто работают круглосуточно, хотя ночью и на выходных ими никто не пользуется. Поды продолжают занимать ресурсы, а инфраструктура — стоить денег.
kube-green — open-source оператор Kubernetes, который останавливает ненужные нагрузки по расписанию и восстанавливает их к началу рабочего дня.
Что умеет:
• Масштабировать Deployments и StatefulSets до нуля.
• Приостанавливать запуск CronJobs.
• Восстанавливать количество реплик по расписанию.
• Учитывать дни недели и часовые пояса.
• Исключать ресурсы по именам или меткам.
• Работать с пользовательскими ресурсами через патчи.
Экономия зависит от инфраструктуры: остановка подов освобождает ресурсы, но для снижения расходов на вычислительные узлы может потребоваться их автоматическое масштабирование.
https://github.com/kube-green/kube-green
@SysAdmin_Portal
Linux-совет: объединение файлов по общему полю
Команда
join объединяет строки двух текстовых файлов по совпадающему ключу. По умолчанию используется первое поле, а разделителями служат пробелы или табуляция.
Например, файл names.txt:
1 Alice 2 BobФайл
ages.txt:
1 25 2 30Выполните:
join names.txt ages.txtРезультат:
1 Alice 25 2 Bob 30Оба файла должны быть отсортированы по полю объединения. Подготовить отдельные отсортированные копии можно так:
sort -k1,1 names.txt > names.sorted.txt
sort -k1,1 ages.txt > ages.sorted.txt
join names.sorted.txt ages.sorted.txt
По умолчанию выводятся только совпавшие записи — похоже на INNER JOIN в SQL.
@SysAdmin_Portal