Например,
() запускает команды в subshell, {} выполняет их в текущем процессе, а [[ ]] даёт более гибкие проверки условий по сравнению с [ ].На картинке — ключевые конструкции Bash, база для написания скриптов, автоматизации и DevOps-задач.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤12🔥9
Как уменьшать лог-файлы без перезапуска сервиса!
В Linux файловый дескриптор привязан к
Поэтому лог корректно очищать без удаления файла:
Эта конструкция обнуляет содержимое, но сохраняет тот же
Если нужно урезать файл до конкретного размера, используется
Команда обрежет файл до 1MB. Она оставляет начало файла и удаляет хвост, то есть будут потеряны последние (самые новые) записи.
Если требуется сохранить последние записи, важно не менять
Корректный вариант, перезаписать содержимое в тот же файл:
🔥 Так сохраняются последние 1000 строк,
🚪 Linux Ready | #совет
В Linux файловый дескриптор привязан к
inode, а не к имени файла. Если процесс уже открыл лог и пишет в него, удаление файла не освободит место сразу.Поэтому лог корректно очищать без удаления файла:
> application.log
Эта конструкция обнуляет содержимое, но сохраняет тот же
inode и открытый дескриптор.Если нужно урезать файл до конкретного размера, используется
truncate:truncate -s 1M application.log
Команда обрежет файл до 1MB. Она оставляет начало файла и удаляет хвост, то есть будут потеряны последние (самые новые) записи.
Если требуется сохранить последние записи, важно не менять
inode файла.Корректный вариант, перезаписать содержимое в тот же файл:
tail -n 1000 application.log > tmp.log && cat tmp.log > application.log && rm tmp.log
inode остаётся тем же, и сервис продолжит писать в текущий файл.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍10🤝9❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Репозиторий представляет собой структурированный гайд по командной строке и скриптингу на Bash. Собраны примеры основных команд Linux, операции с файлами и директориями, работа с переменными, функциями, условиями и др. Материал охватывает как базовые операции, так и практические приёмы написания скриптов.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤10🔥8
Поиск файлов без владельца в Linux!
Иногда после удаления пользователей или некорректной миграции системы в файловой системе остаются файлы, у которых больше нет владельца. Они могут создавать проблемы с доступом и безопасностью.
Найти файлы без пользователя-владельца:
Параметр
Найти файлы без группы:
Это полезно после удаления групп или переноса данных между системами.
Показать подробную информацию о таких файлах:
Искать только в определённой директории:
Это быстрее и удобнее при анализе конкретного приложения или сервиса.
Если поиск выполняется по всей системе, можно скрыть ошибки доступа:
Это уберёт сообщения Permission denied из вывода.
Не переходить в другие файловые системы (полезно при аудите):
Опция
Проверить UID владельца файла:
Флаг
Назначить нового владельца:
Это восстановит корректные права доступа.
🔥 Файлы без владельца часто появляются после удаления пользователей, миграции системы или восстановления данных из резервных копий. Их регулярная проверка помогает избежать проблем с доступом и обнаружить потенциальные проблемы безопасности.
🚪 Linux Ready | #практика
Иногда после удаления пользователей или некорректной миграции системы в файловой системе остаются файлы, у которых больше нет владельца. Они могут создавать проблемы с доступом и безопасностью.
Найти файлы без пользователя-владельца:
find / -nouser
Параметр
-nouser ищет файлы, у которых UID не сопоставляется ни с одной записью в базе пользователей (обычно /etc/passwd, но также могут использоваться NSS-источники, например LDAP).Найти файлы без группы:
find / -nogroup
Это полезно после удаления групп или переноса данных между системами.
Показать подробную информацию о таких файлах:
find / -nouser -ls
-ls выводит подробную информацию: права доступа, UID/GID владельца, размер, inode и путь к файлу.Искать только в определённой директории:
find /var/www -nouser
Это быстрее и удобнее при анализе конкретного приложения или сервиса.
Если поиск выполняется по всей системе, можно скрыть ошибки доступа:
find / -nouser 2>/dev/null
Это уберёт сообщения Permission denied из вывода.
Не переходить в другие файловые системы (полезно при аудите):
find / -xdev -nouser
Опция
-xdev ограничивает поиск текущей файловой системой и не заходит в /proc, /sys, сетевые или другие смонтированные разделы. Это ускоряет проверку и уменьшает лишние результаты.Проверить UID владельца файла:
ls -ln /path/to/file
Флаг
-n показывает числовые UID и GID вместо имён.Назначить нового владельца:
chown user:group /path/to/file
Это восстановит корректные права доступа.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤9🔥8
ACL — это расширение обычных прав доступа в Linux. Если стандартные права (owner / group / other) позволяют управлять доступом только на базовом уровне, то ACL дает возможность назначать права конкретным пользователям и группам.
На картинке — базовые принципы работы ACL.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤8🔥8
Проверяем, каким маршрутом ядро отправит пакет с помощью ip route get!
Когда на сервере несколько интерфейсов, VPN, policy routing или просто странное сетевое поведение, читать таблицы маршрутов бывает недостаточно. В таких случаях проще напрямую спросить у ядра, какой маршрут оно выберет для пакета до конкретного адреса.
Для этого есть
Проверить маршрут до конкретного IP:
В выводе обычно видно
Пример:
Здесь видно, что пакет будет отправлен через
Понять, какой маршрут выберется для конкретного исходного IP:
Это полезно на серверах с несколькими IP-адресами, когда нужно проверить выбор маршрута для конкретного исходного адреса.
Проверить поиск маршрута с указанием интерфейса:
Опция
Можно также выполнить lookup так, как если бы пакет пришёл на определённый интерфейс:
Опция
Если нужно посмотреть таблицы маршрутизации:
Если используется policy-маршрутизация, полезно также проверить правила:
А чтобы увидеть маршруты во всех таблицах:
🔥 Особенно полезно на серверах с несколькими интерфейсами, VPN-узлах и в сложных сетевых конфигурациях.
🚪 Linux Ready | #практика
Когда на сервере несколько интерфейсов, VPN, policy routing или просто странное сетевое поведение, читать таблицы маршрутов бывает недостаточно. В таких случаях проще напрямую спросить у ядра, какой маршрут оно выберет для пакета до конкретного адреса.
Для этого есть
ip route get. Команда показывает, какой маршрут будет выбран при поиске маршрута (route lookup), а также исходный адрес и интерфейс, через который пакет будет отправлен.Проверить маршрут до конкретного IP:
ip route get 8.8.8.8
В выводе обычно видно
via, dev и src — через какой следующий узел пойдёт трафик, через какой интерфейс и с какого исходного адреса он будет отправлен.Пример:
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.10
Здесь видно, что пакет будет отправлен через
eth0, следующий узел — 192.168.1.1, а исходным адресом будет 192.168.1.10.Понять, какой маршрут выберется для конкретного исходного IP:
ip route get 8.8.8.8 from 192.168.1.10
Это полезно на серверах с несколькими IP-адресами, когда нужно проверить выбор маршрута для конкретного исходного адреса.
Проверить поиск маршрута с указанием интерфейса:
ip route get 8.8.8.8 oif eth0
Опция
oif позволяет выполнить поиск маршрута с учётом указанного выходного интерфейса.Можно также выполнить lookup так, как если бы пакет пришёл на определённый интерфейс:
ip route get 1.1.1.1 iif eth1
Опция
iif указывает входной интерфейс и позволяет посмотреть, какой маршрут выберет ядро для форвардинга такого пакета. Это полезно при разборе асимметричной маршрутизации (asymmetric routing), policy-маршрутизации (policy routing) и правил, завязанных на интерфейсы.Если нужно посмотреть таблицы маршрутизации:
ip route
Если используется policy-маршрутизация, полезно также проверить правила:
ip rule
А чтобы увидеть маршруты во всех таблицах:
ip route show table all
ip route показывает записи в таблицах маршрутизации, а ip route get — какой маршрут ядро реально выберет для конкретного пакета при route lookup.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍9🤝9❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Это ресурс с подборкой шпаргалок по Linux, где собраны самые важные команды и инструменты для работы в терминале. Материал особенно полезен тем, кто работает с серверами через SSH или постоянно взаимодействует с системой из командной строки, где важно быстро вспомнить нужную команду или параметр. Всё подано в формате компактных таблиц и коротких подсказок.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥10🤝9
Как ускорить работу с директориями?
В повседневной работе часто приходится создавать директории и переходить в них. Обычно это делается двумя командами подряд.
Функция
Директория создаётся и вы сразу оказываетесь внутри неё. Это удобно при создании новых проектов, тестовых каталогов или рабочих папок.
Создание временной рабочей директории. Это удобно, когда нужно быстро распаковать архив, протестировать скрипт или поэкспериментировать с файлами:
После работы её можно удалить вручную, либо она может исчезнуть позже при очистке временных каталогов системой.
🔥 Чтобы пользоваться ими постоянно, достаточно добавить функции в файл конфигурации вашей оболочки (
🚪 Linux Ready | #совет
В повседневной работе часто приходится создавать директории и переходить в них. Обычно это делается двумя командами подряд.
Функция
mkcd объединяет эти действия в одну команду:mkcd() { mkdir -p -- "$1" && cd -- "$1"; }
mkcd projectДиректория создаётся и вы сразу оказываетесь внутри неё. Это удобно при создании новых проектов, тестовых каталогов или рабочих папок.
Создание временной рабочей директории. Это удобно, когда нужно быстро распаковать архив, протестировать скрипт или поэкспериментировать с файлами:
tmpcd() { cd -- "$(mktemp -d)"; }
tmpcdПосле работы её можно удалить вручную, либо она может исчезнуть позже при очистке временных каталогов системой.
~/.bashrc, ~/.zshrc).Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥9🤝8❤2
This media is not supported in your browser
VIEW IN TELEGRAM
В репозитории собраны материалы по основам Linux для разработчиков: работа с shell, управление пакетами, права доступа, процессы, SSH и сетевые утилиты. Всё оформлено в виде наглядных схем, таблиц и кратких объяснений. Материал разбит на небольшие блоки: шпаргалки, краткое пояснения ключевых терминов и ссылки на источники для углубленного изучения.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥9🤝9
Работа с временными каталогами через mktemp!
При написании скриптов важно безопасно создавать временные файлы и каталоги. Для этого используется утилита
Создание временного файла:
Команда создаёт файл в
Создание временного каталога:
Флаг
Создание файла с собственным шаблоном имени:
Использование временного файла в shell-скрипте:
Путь сохраняется в переменную, после чего файл можно использовать внутри скрипта.
Создание временного каталога для обработки данных:
Часто используется при обработке архивов или промежуточных файлов.
Автоматическая очистка временного файла через
Создание файла в конкретном каталоге:
Полезно, если требуется другой каталог вместо
🔥 Использование
🚪 Linux Ready | #практика
При написании скриптов важно безопасно создавать временные файлы и каталоги. Для этого используется утилита
mktemp, которая создаёт уникальные имена и исключает гонки (race conditions).Создание временного файла:
mktemp
Команда создаёт файл в
/tmp и выводит его путь.Создание временного каталога:
mktemp -d
Флаг
-d создаёт каталог вместо файла.Создание файла с собственным шаблоном имени:
mktemp /tmp/script.XXXXXX
XXXXXX заменяются случайной последовательностью символов.Использование временного файла в shell-скрипте:
tmpfile=$(mktemp)
echo "data" > "$tmpfile"
Путь сохраняется в переменную, после чего файл можно использовать внутри скрипта.
Создание временного каталога для обработки данных:
tmpdir=$(mktemp -d)
cp *.log "$tmpdir"
Часто используется при обработке архивов или промежуточных файлов.
Автоматическая очистка временного файла через
trap:tmpfile=$(mktemp)
trap 'rm -f "$tmpfile"' EXIT
trap гарантирует удаление временного файла при завершении скрипта.Создание файла в конкретном каталоге:
mktemp -p /var/tmp backup.XXXXXX
Полезно, если требуется другой каталог вместо
/tmp.mktemp считается стандартной практикой для shell-скриптов — ручное создание файлов в /tmp через фиксированные имена может привести к конфликтам и проблемам безопасности.Please open Telegram to view this post
VIEW IN TELEGRAM
🤝13🔥11👍8❤1
Например, DNS отвечает за преобразование доменных имен в IP-адреса, TCP обеспечивает надежное соединение и порядок доставки пакетов, а HTTP используется для обмена запросами и ответами между клиентом и сервером.
На картинке — основные сетевые протоколы и уровни, которые участвуют в передаче данных.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥10❤9
Нужно быстро передать файл между машинами: лог, архив или сборку. Вместо настройки сервисов можно поднять временный HTTP-сервер и скачать файл через браузер или
curl.В этом посте:
• Запускаем встроенный HTTP-сервер Python;
• Ограничиваем каталог раздачи, чтобы не светить лишние файлы;
• Скачиваем файл с другой машины через curl или браузер;
• Используем такой сервер как быстрый способ передачи логов, сборок и архивов.
Полезный приём для администрирования и разработки: сервер быстро поднимается, не требует установки дополнительных сервисов и работает на любой системе с Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍15🤝10❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Это мощный блог с чёткими и понятными гайдами по Ubuntu, shell-скриптам, настройке серверов, сетей и утилит.
Каждая статья — как мини-мануал: команды, объяснения, примеры.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤9🔥9👎1
Например,
/etc хранит системные конфигурации, /var используется для логов и изменяемых данных, а /home содержит домашние директории пользователей.На картинке — основные каталоги, которые важно знать при работе с системой, серверами и разработкой.
Сохрани, чтобы держать под рукой!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍10🔥9
Быстрый повтор и поиск команд из истории Bash!
Часто приходится выполнять длинные команды: docker, git, kubectl, сборки, скрипты или сложные пайплайны. Печатать их заново может быть долго и неудобно.
В Bash можно обращаться к истории команд напрямую.
Чтобы найти нужную команду, можно отфильтровать историю:
Каждая команда имеет номер. Любую из них можно выполнить снова:
Также можно повторить последнюю команду, которая начиналась с определённого слова.
Bash найдёт последнюю команду, начинающуюся с
🔥 Использование !номер и !команда позволяет запускать сложные команды без копирования и ручного набора.
🚪 Linux Ready | #совет
Часто приходится выполнять длинные команды: docker, git, kubectl, сборки, скрипты или сложные пайплайны. Печатать их заново может быть долго и неудобно.
В Bash можно обращаться к истории команд напрямую.
Чтобы найти нужную команду, можно отфильтровать историю:
history | grep docker
Каждая команда имеет номер. Любую из них можно выполнить снова:
!482
Также можно повторить последнюю команду, которая начиналась с определённого слова.
Bash найдёт последнюю команду, начинающуюся с
docker, и выполнит её снова. Это особенно удобно при работе с длинными CLI-командами:!docker
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤11🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Это удобная шпаргалка по основным командам Linux, которая помогает быстро ориентироваться в системе и вспоминать нужные команды без долгих поисков в документации. Внутри собраны команды для работы с файловой системой, процессами, сетью, пользователями и системной информацией — всё с короткими пояснениями и примерами использования.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🤝9🔥7❤3
Быстро привести JSON в читаемый вид через jq!
Иногда API возвращает JSON одной длинной строкой. В терминале читать такое совершенно неудобно. Самый простой способ привести всё в нормальный вид — прогнать через
Например, если JSON лежит в файле:
Часто это используют прямо при работе с API:
Так сразу видно структуру ответа.
Если нужно вытащить конкретное поле:
То же самое можно сделать прямо из ответа API:
Иногда удобно забрать сразу несколько полей:
Если в JSON есть массив, можно пройтись по всем элементам:
Например, вытащить из каждого объекта поле name:
Когда нужен вывод без кавычек, пригодится флаг
Это полезно, если результат дальше используется в скрипте.
Иногда ещё удобно быстро посмотреть, какие вообще пути есть в JSON:
Команда покажет все доступные ключи и вложенные пути.
Так можно сразу вытащить нужные данные из ответа API.
🔥 В целом
🚪 Linux Ready | #практика
Иногда API возвращает JSON одной длинной строкой. В терминале читать такое совершенно неудобно. Самый простой способ привести всё в нормальный вид — прогнать через
jq.Например, если JSON лежит в файле:
jq . file.json
jq просто отформатирует его: разобьёт на строки и добавит отступы.Часто это используют прямо при работе с API:
curl -s https://api.github.com/repos/torvalds/linux | jq .
Так сразу видно структуру ответа.
Если нужно вытащить конкретное поле:
jq '.name' file.json
То же самое можно сделать прямо из ответа API:
curl -s https://api.github.com/repos/torvalds/linux | jq '.description'
Иногда удобно забрать сразу несколько полей:
jq '{name, description, language}' file.jsonЕсли в JSON есть массив, можно пройтись по всем элементам:
jq '.items[]' file.json
Например, вытащить из каждого объекта поле name:
jq '.items[].name' file.json
Когда нужен вывод без кавычек, пригодится флаг
-r:jq -r '.name' file.json
Это полезно, если результат дальше используется в скрипте.
Иногда ещё удобно быстро посмотреть, какие вообще пути есть в JSON:
jq 'paths' file.json
Команда покажет все доступные ключи и вложенные пути.
jq отлично вписывается в обычные shell-пайплайны. Например:curl -s https://api.example.com/users | jq -r '.users[].email'
Так можно сразу вытащить нужные данные из ответа API.
jq — один из самых удобных инструментов для работы с JSON в терминале. Если часто возишься с API или логами, он экономит кучу времени.Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥9❤7🤝3