es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

🐧 Linux Junior. Программирование под Linux.

🐧 Linux Junior. Программирование под Linux.

Ir al canal en Telegram

Канал для программистов работающих с Linux. Почти все Python девелоперы с нами ну и другие тоже подтянутся. По рекламе: @jannytg @anothertechrock

Mostrar más
3 071
Suscriptores
Sin datos24 horas
-27 días
-1130 días
Archivo de publicaciones
👩‍💻 Команда gzip в Linux gzip — это стандартная утилита в Linux для сжатия и распаковки файлов. Она уменьшает размер файлов, экономит место и ускоряет передачу данных по сети. Поддерживает разные уровни сжатия (от -1 — быстро до -9 — максимально). gzip применяется для уменьшения размеров логов и бэкапов, упаковки результатов сборки, сжатия данных перед передачей по сети, автоматических задач (cron, CI/CD). В этом посте мы рассмотрим несколько сценариев использования gzip. 🐧 Сжатие с оптимизацией. Чтобы сжать файл с максимальной степенью сжатия, выполните:
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.

Какая команда используется для копирования файлов и директорий?
Anonymous voting

Комбинация find, du и sort позволит найти 10 самых "тяжёлых" файлов с путями и размерами.
find . -type f -exec du -h {} + | sort -rh | head -n 10
#вопросы

❓ Как быстро узнать, какой файл в каталоге самый большой? Ответ через час. #вопросы

🔥 Разница между su и su - Ни для кого не секрет, что Linux - система, с которой можно работать от разных пользователей. Сегодня я запускаю сессию от Паши, завтра от Пети. Когда вы в сессии открываете терминал, стартует оболочка, которая подстраивает окружение под конкретного юзера: выполняет скрипты, определяет переменные. Бывает, приходится, работая в сессии одного пользователя, переключиться на другого, например, чтобы использовать ресурсы, ограниченные правами доступа. Для этого мы используем команду su (substitute user), которая позволяет сменить пользователя в текущей оболочке:
$ su vasya
После выполнения команды создастся дочерняя оболочка, которая переймет все переменные окружения родителя, определит пользовательские (USER, HOME ...) и выполнит локальные "Васины" скрипты: /home/vasya/.bashrc и т.д.:
$ export USER1VAR="vasya"

$ su xoadmin
$ printenv | grep USER
USER=xoadmin
USER1VAR=vasya
Какая-то каша выходит. Половина Васиных переменных, половина юзера xoadmin. Такой способ полезен, когда нам нужно быстро поменять пользователя и не требуется его окружение в изначальном виде. Если нужно полностью воссоздать среду, как при чистом входе в систему, следует использовать su -:
$ su - xoadmin
Окружение родителя мы не наследуем и запускаем оболочку типа "login shell", которая выполнит дополнительные скрипты инициализации "/etc/profile", "~/.bash_profile". Также, когда мы используем su -, наш рабочий каталог переключается на домашний для целевого пользователя. Мелочь, но факт:
$ pwd
/home/vasya/Music
$ su - xoadmin
$ pwd
/home/xoadmin

🎥 Вебинар по Linux: С Windows на Linux: первый шаг системного администратора На вебинаре вы узнаете: - В чем принципиальные
🎥 Вебинар по Linux: С Windows на Linux: первый шаг системного администратора На вебинаре вы узнаете: - В чем принципиальные отличия Linux и Windows - Какие базовые команды нужны для работы в консоли Linux - Как устроена файловая система Linux и где искать нужные файлы В результате вебинара вы: - Научитесь выполнять базовые команды в терминале Linux - Поймете структуру файловой системы и принципы работы с файлами - Сможете устанавливать программы и управлять пакетами - Разберетесь, как адаптироваться к Linux после Windows 👉 Для участия зарегистрируйтесь: https://vk.cc/cUMPNt 🎁 Все участники вебинара получат специальные условия на полное обучение курса "Administrator Linux. Basic" Курс создан для тех, кто хочет перейти от случайного опыта к уверенной работе с сервером. Вы освоите основы операционной системы, научитесь работать в Bash, поймёте, как устроены сети, научитесь запускать веб-сервисы, работать с MySQL, Docker, Git, Prometheus и Grafana. Это фундамент, без которого невозможен дальнейший рост. 👉 Повысить свои навыки:  https://vk.cc/cUMPUk Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

👩‍💻 Команды apt и apt-get Это две команды, предназначенные для установки, удаления и обновления программного обеспечения на системе. ✅ apt-get apt-get - это одна из первых команд, использовавшихся для управления пакетами в системах Debian и Ubuntu. 🟩 Преимущества apt-get: ✔️ Широкая поддержка. apt-get является стандартной командой для управления пакетами в Debian и Ubuntu, что делает ее широко распространенной и надежной. ✔️ Подробные выводы. При выполнении команд apt-get выводит подробную информацию о процессе установки или удаления пакета, что позволяет пользователям следить за процессом. 🟧 Недостатки apt-get: ✔️ Медленное обновление индексов пакетов. apt-get иногда может работать медленно из-за обновления индексов пакетов перед выполнением команды. ✔️ Неудобство в использовании. Использование apt-get требует ввода длинных команд, что может быть неудобно для новичков. ✅ apt apt - это более новая команда, предназначенная для упрощения управления пакетами в системах Debian и Ubuntu. Она является частью более современного инструмента APT (Advanced Package Tool), который объединяет несколько функций в одном интерфейсе. 🟩 Преимущества apt: ✔️ Упрощенное использование. apt предоставляет более простой и интуитивно понятный интерфейс для управления пакетами, что делает его более удобным в использовании. ✔️ Более быстрое обновление индексов пакетов. apt автоматически обновляет индексы пакетов перед выполнением команды, что уменьшает время ожидания пользователя. 🟧 Недостатки apt: ✔️ Менее подробные выводы. При выполнении команд apt вывод может быть менее подробным по сравнению с apt-get, что затрудняет отслеживание процесса установки или удаления пакета. ✔️ Ограниченная поддержка сторонних репозиториев. apt может иметь ограниченную поддержку сторонних репозиториев по сравнению с apt-get, хотя это не так часто встречается.

Выберите правильный вариант для поиска в указанных файлах (files) строк, где встречается BOB, Bob, BOb или BoB.
Anonymous voting

Утилита xargs в Unix-подобных операционных системах считывает данные из стандартного ввода и использует их для построения и выполнения команд. С ее помощью можно, например, удалить список файлов, полученный от другой команды:
ls *.log | xargs rm
Так можно удалить все файлы, найденные предыдущей командой. Работает с find, grep и многими другими. Конечно, если список можно выразить шаблоном, то проще всего передать шаблон команде rm:
rm *.log
rm file{1..100}.txt
Это не требует промежуточных команд и работает мгновенно. Но xargs тоже может пригодиться. Например, можно удалить только те файлы, имена которых содержат определённое слово:
ls | grep "temp" | xargs rm
Можно использовать и более сложные фильтры, включая регулярные выражения. Если установлен fzf, можно удалять файлы выборочно:
ls | fzf -m | xargs -r rm
Вы получаете список файлов, выбираете нужные пробелом, и xargs их удаляет. Очень удобно. #вопросы

❓ Как удалить список файлов, сгенерированный другой командой? Ответ через час. #вопросы

🔥 Расширенные права доступа (ACL) в Linux Обычная модель прав в Linux проста: есть владелец, группа и все остальные. Для большинства случаев этого хватает, но не всегда. А что если нужно, чтобы user1 и user2 имели разные права к одному и тому же файлу? Или чтобы у определённого пользователя был доступ только к подкаталогу? Тут на сцену выходит ACL — Access Control List. ✔️ Что такое ACL ACL позволяет задавать права не только для владельца и группы, а для любого пользователя или группы. Это похоже на “дополнительный слой” поверх обычных разрешений. 🔍 Проверка наличия ACL Посмотрим на файл:
ls -l report.txt
-rw-r-----+ 1 marina staff 2048 Oct 22 11:20 report.txt
Плюсик + после прав (rw-r-----+) говорит, что у файла есть ACL. Подробнее:
getfacl report.txt
Результат может выглядеть так:
# file: report.txt
# owner: marina
# group: staff
user::rw-
user:john:r--
group::r--
mask::r--
other::---
Мы видим, что кроме владельца и группы, есть отдельная запись для пользователя john. ✏️ Назначение ACL Выдать пользователю john права на чтение файла:
setfacl -m u:john:r file.txt
Выдать группе designers права на запись:
setfacl -m g:designers:rw file.txt
❌ Удалить конкретную запись ACL:
setfacl -x u:john file.txt
Сбросить все расширенные права (оставив только базовые chmod-права):
setfacl -b file.txt
🗂 Установка ACL по умолчанию для каталога ACL можно "прикрепить" к каталогу, чтобы новые файлы наследовали права автоматически. Пример: всем пользователям группы team разрешить читать и писать в каталог /srv/docs:
setfacl -d -m g:team:rw /srv/docs
Теперь любой файл, созданный внутри /srv/docs, получит те же права. 🟢 Полезно знать mask в выводе getfacl — это "ограничитель" максимальных разрешений ACL. Даже если пользователю выданы права rwx, но в качестве mask стоит rw-, то выполнение будет заблокировано. Маску можно менять отдельно:
setfacl -m m:rw file.txt
⚙️ Пример из жизни Пусть в /var/www/project лежит сайт, над которым работают два человека: admin и editor. Админ имеет полный доступ, а редактор — только чтение и запись контента:
chown -R admin:admin /var/www/project
setfacl -R -m u:editor:rw /var/www/project/content
setfacl -d -m u:editor:rw /var/www/project/content
Первая команда setfacl назначает права доступа для уже существующих файлов и каталогов в /var/www/project/content. Вторая устанавливает шаблон прав, который унаследуют будущие файлы и папки, созданные в /var/www/project/content. Теперь editor сможет редактировать файлы в /content (в том числе и все созданные в дальнейшем), но не затронет код приложения.

👩‍💻 Полезные опции команды curl Команда curl — одна из самых мощных и часто используемых утилит в Linux. Она предназначена для отправки запросов по различным интернет-протоколам (HTTP, HTTPS, FTP и др.) прямо из терминала. В большинстве дистрибутивов curl уже предустановлен. ⚙️ Примеры использования ⏺Указание времени выполнения команды Некоторые операции выполняются бесконечно, что может привести к зависанию системы. Чтобы прервать выполнение команды cURL по истечении определенного времени, можно установить таймер (время указывается в секундах):
$ curl -m 60 example.com
Также есть возможность указать, в течении какого времени держать соединение активным. Это позволит избежать бесконечных попыток соединения с недоступным узлом. Эта опция тоже в качестве аргумента принимает значение в секундах. А команда выглядит так:
$ curl --connect-timeout 60 example.com
⏺Указание логина и пароля Утилита cURL позволяет указывать имя пользователя и пароль при подключении. Чаще всего это нужно при аутентификации на FTP-сервере. Для этого используется ключ -u.
$ curl -u username:password ftp://example.com
Данную опцию можно использовать с любым протоколом, но FTP является самым распространённым для простой передачи файлов. Если нужно скачать файл, запускаем ту же команду, только указываем полный путь к нужному документу:
$ curl -u username:password ftp://example.com/readme.txt
⏺Использование прокси cURL можно указать, чтобы подключение выполнялось через прокси-сервер. По умолчанию curl использует HTTP-прокси, но можно указать и другие. Чтобы направить трафик через прокси, используется ключ -x.
$ curl -x 192.168.1.1:8080 http://example.com
Данная команда обязует cURL подключиться к прокси по адресу 192.168.1.1 на порту 8080 перед обращением на example.com Прокси можно использовать и с другими протоколами. Ниже показан пример использования прокси-сервера для получения файла с FTP-сервера.
$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt

Effective group id можно установить при помощи следующих прав доступа:
Anonymous voting

Чтобы выявить процессы, занимающие больше всего памяти, используйте ps, sort и head:
ps -eo pid,comm,%mem --sort=-%mem | head
Этот конвейер выводит PID, команду и процент использования памяти. Можно заменить %mem на %cpu, чтобы отсортировать по загрузке процессора. #вопросы

❓ Как посмотреть, какие процессы занимают больше всего памяти? Ответ через час. #вопросы

ℹ️ Системные логи Linux Системные логи, которые часто можно найти в директории /var/log на системах Linux, являются важным инструментом для мониторинга и устранения проблем в системе. Вот краткие заметки о некоторых распространённых системных логах: 🟣 syslog: Лог общего назначения, который содержит сообщения от различных системных служб и приложений. Это основной файл журнала, в который поступают сообщения из многих других логов. 🟣 auth.log: Записывает сообщения, связанные с аутентификацией, включая успешные и неудачные попытки входа, изменения паролей и события аутентификации пользователей. 🟣 kern.log: Записывает сообщения, относящиеся к ядру системы, такие как ошибки оборудования, загрузка модулей ядра и другие активности ядра. 🟣 messages: Универсальный лог-файл, который записывает различные системные сообщения, включая старты и завершения работы системы, а также другие события, связанные с системой. 🟣 dmesg: Отображает сообщения из кольцевого буфера ядра, предоставляя реальный временной обзор событий, связанных с ядром, и обнаружением оборудования во время загрузки системы. 🟣 cron: Записывает сообщения, связанные с заданиями cron и запланированными задачами, включая время их выполнения и ошибки, возникшие при их выполнении. 🟣 secure: Записывает сообщения, связанные с безопасностью, включая попытки аутентификации, повышение привилегий и другие события безопасности. 🟣 apache/access.log и apache/error.log: Логи, специфичные для веб-сервера Apache. access.log записывает логи HTTP-доступа, а error.log фиксирует ошибки и предупреждения сервера Apache. 🟣 nginx/access.log и nginx/error.log: Подобные логам Apache, эти логи специфичны для веб-сервера Nginx и записывают события доступа и ошибки. 🟣 mysql/error.log: Записывает ошибки и предупреждения, возникшие у сервера базы данных MySQL, включая ошибки при старте, сбои запросов и сбои баз данных. Эти логи предоставляют ценную информацию о производительности системы, событиях безопасности и помогают при устранении проблем. Регулярный мониторинг и анализ этих логов помогают поддерживать здоровье системы и выявлять потенциальные проблемы до того, как они перерастут в серьёзные.