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

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

前往频道在 Telegram

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

显示更多
3 098
订阅者
无数据24 小时
-37
-1030
帖子存档
👩‍💻 Передача файлов с помощью scp Команда scp используется для безопасного копирования файлов между локальным компьютером и удаленным сервером, а также между двумя удаленными серверами, используя протокол SSH. Она позволяет передавать файлы и каталоги по зашифрованному каналу, что гарантирует конфиденциальность данных. ⚙️ Синтаксис:
scp [опции] <источник> <назначение>
⚙️ Примеры использования ⏺ Копирование файла на удалённый сервер:
scp file.txt user@remote_host:/path/to/destination  
⏺ Скачивание файла с сервера:
scp user@remote_host:/path/to/file.txt ./  
⏺ Передача директории:
scp -r папка user@remote_host:/path/to/destination  
-r — ключ для копирования директории ⏺ Указание порта SSH: Если вдруг используется нестандартный порт, мы можем его передать установив флаг -P:
scp -P 2222 file.txt user@remote_host:/path/to/destination 
📥 Для оптимизации передачи больших файлов можно их сжать с помощью флага -C.

Команда enable -n
Anonymous voting

Инженеры перебрали... Linux-кейсов 🤩 23 апреля K2 Cloud и K2Тех проведут онлайн - митап — pебята будут разбирать реальные ин
Инженеры перебрали... Linux-кейсов 🤩 23 апреля K2 Cloud и K2Тех проведут онлайн - митап — pебята будут разбирать реальные инженерные кейсы из практики про поломанный SSH, обновление ядер, поломку сети в ВМ и балансировщики с одинаковыми конфигами, но разными результатами. А ещё можно принести свой кейс на разбор и получить приз. Подробности и регистрация по ссылке.

Для вывода определенных столбцов текстовых файлов удобно пользоваться командой awk:
awk '{print $2, $5}' data.txt
Эта команда покажет второй и пятый столбцы. Отлично подходит для логов и CSV без кавычек. #вопросы

Как вывести только определённые столбцы из текстового файла? Ответ через час. #вопросы

💡 Использование опций команды apt-get для очистки системы Большинство из нас, работающих с системами на базе Debian, регулярно используют команду apt-get для установки и обновления пакетов. Но как часто мы задумываемся об очистке системы? Давайте рассмотрим три полезные команды для очистки ненужных файлов: apt-get clean, apt-get autoclean и apt-get autoremove. 1️⃣ apt-get clean Команда apt-get clean очищает локальный репозиторий от извлеченных файлов пакетов, находящихся в каталоге /var/cache/apt/archives/. Она удаляет все файлы пакетов, кроме файлов блокировки и пустых подкаталогов. Эта команда полезна для освобождения дискового пространства, особенно если вы часто устанавливаете и удаляете пакеты. Например, до выполнения команды apt-get clean в каталоге /var/cache/apt/archives/ могут находиться следующие файлы:
/var/cache/apt/archives/db6.1-util_6.1.27+dfsg1-0.7ubuntu2_amd64.deb
/var/cache/apt/archives/db-util_2%3a6.121~exp1ubuntu1_all.deb
/var/cache/apt/archives/lock
/var/cache/apt/archives/postfix_3.4.6-2ubuntu2_amd64.deb
/var/cache/apt/archives/sasl2-bin_2.2.25+dfsg-1build2_amd64.deb
После выполнения команды sudo apt-get clean этот каталог будет очищен, и оставлены будут только файлы блокировки и пустые подкаталоги. 2️⃣ apt-get autoclean Команда apt-get autoclean похожа на clean, но она удаляет только те пакеты, которые больше не могут быть загружены из репозиториев и, следовательно, больше не нужны. Это предотвращает переполнение кэша устаревшими файлами. Выполнение следующей команды очистит кэш от бесполезных пакетов, оставляя только актуальные и доступные для загрузки файлы:
sudo apt-get autoclean
3️⃣ apt-get autoremove Команда apt-get autoremove удаляет пакеты, которые были установлены автоматически как зависимости для других пакетов, но теперь больше не требуются. Использование этой команды после удаления пакетов помогает поддерживать чистоту системы и предотвращает накопление ненужных файлов. Пример использования:
sudo apt-get autoremove
После выполнения команды вы увидите список пакетов, которые больше не нужны, например:
The following packages were automatically installed and are no longer required:
g++-8 gir1.2-mutter-4 libapache2-mod-php7.2 libcrystalhd3
libdouble-conversion1 libgnome-desktop-3-17 libigdgmm5 libllvm8
liblouisutdml8 libmutter-4-0 libmysqlclient20 libpoppler85 linsydc++-8-dev
libtagc0 libvpx5 libx265-165 php7.2 php7.2-cli php7.2-common php7.2-json
php7.2-opcache php7.2-readline
Use 'sudo apt-get autoremove' to remove them.
🔥 Эти простые команды помогут вам поддерживать вашу систему на базе Debian в чистоте и порядке, освобождая дисковое пространство и оптимизируя работу системы.

👩‍💻 Команда 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 (в том числе и все созданные в дальнейшем), но не затронет код приложения.

🐧 Linux Junior. Программирование под Linux. - Telegram 频道 @juniorlinux 的统计与分析