Удобная работа с файловой системой через CLI
Midnight Commander (mc) - файловый менеджер, работать с которым можно без графического туллкита (GTK, Qt).
Имеет графический интерфейс, который отображается в текстовом режиме. Он работает на всех видах терминалов и через SSH.
Установка и запуск:
Экран утилиты разбивается на три части - две панели с файлами (левая и правая) и командная строка, позволяющая вводить команды операционной системы.
Некоторые возможности MC
1) стандартные операции с файлами: просмотр, редактирование, копирование, переименование/перемещение, удаление, изменение прав и т.д.;
2) функции работы с выделенным блоком, поиск/замена, отмена последней операции, цветовое выделение синтаксиса и т.д.;
3) выделение файлов разных типов цветом;
4) нажав Enter на файле архива (.tar, .tgz, .zip, .a, .rpm и т.д.) можно "войти внутрь" него;
5) поиск файлов по шаблону имени и по содержимому;
6) может работать с файлами на удаленных системах посредством FTP и SSH.
Вывод
Утилита очень полезна при проведении работ на серверах, когда нет доступа к GUI. В целом, понимаю, учить эти комбинации клавиш геморно. После vim меня вообще "дергает", когда не вижу понятных кнопок)
Но оно того стоит, ребята. Со временем все начинает получаться "на автомате" и работа идет гораздо быстрее. Поэтому и nano и vim и mc хорошо бы знать.
LinuxCamp | #utils
Midnight Commander (mc) - файловый менеджер, работать с которым можно без графического туллкита (GTK, Qt).
Имеет графический интерфейс, который отображается в текстовом режиме. Он работает на всех видах терминалов и через SSH.
Установка и запуск:
$ sudo apt install mc
$ mc
Экран утилиты разбивается на три части - две панели с файлами (левая и правая) и командная строка, позволяющая вводить команды операционной системы.
Некоторые возможности MC
1) стандартные операции с файлами: просмотр, редактирование, копирование, переименование/перемещение, удаление, изменение прав и т.д.;
2) функции работы с выделенным блоком, поиск/замена, отмена последней операции, цветовое выделение синтаксиса и т.д.;
3) выделение файлов разных типов цветом;
4) нажав Enter на файле архива (.tar, .tgz, .zip, .a, .rpm и т.д.) можно "войти внутрь" него;
5) поиск файлов по шаблону имени и по содержимому;
6) может работать с файлами на удаленных системах посредством FTP и SSH.
Вывод
Утилита очень полезна при проведении работ на серверах, когда нет доступа к GUI. В целом, понимаю, учить эти комбинации клавиш геморно. После vim меня вообще "дергает", когда не вижу понятных кнопок)
Но оно того стоит, ребята. Со временем все начинает получаться "на автомате" и работа идет гораздо быстрее. Поэтому и nano и vim и mc хорошо бы знать.
LinuxCamp | #utils
👍48🔥16🤣10❤🔥2
От cron‑а к DAG‑ам: зачем нужен оркестратор и почему именно Airflow
Представьте простую бытовую задачу: каждую ночь нужно
1) выгрузить базу;
2) превратить её в отчёт;
3) отправить результат в S3;
Пока шагов мало, их легко раскидать по crontab. Но рано или поздно что‑нибудь пойдет медленнее обычного, соседний скрипт стартует раньше, отчёт выедет пустым — и вы начинаете расставлять костыли: sleep, «if‑else», ручные письма об ошибках. Так появляется «снежный ком» расписаний, который трудно контролировать.
Что делает Airflow по‑другому
Airflow описывает тот же процесс в виде DAG — направленного ациклического графа. Каждая задача — узел, каждая зависимость — стрелка.
Расписание теперь одно на весь процесс, а порядок шагов Airflow вычисляет сам:
Что меняется на практике:
- Автоматические повторы — достаточно указать retries, и упавшая задача перезапустится без ваших правок в коде скрипта.
- Чёткая картинка процессов — в веб‑интерфейсе видно, что именно сейчас выполняется, что уже зелёное, а что покраснело.
- Уведомления «из коробки» — функция on_failure_callback отправит сообщение в Telegram/Slack, как только что‑то рухнет.
- Sensors и ожидание событий — вместо бесконечных while sleep 30 можно сказать: «ждать, пока файл появится в папке», и Airflow займётся этим сам.
В одном из следующих постов мы поднимем Airflow одной командой через Docker‑Compose и соберём первый «hello world» DAG.
Реальный сценарий задержки
Допустим, дамп БД обычно занимает пять минут. В одну из ночей, из‑за нагрузки, он растягивается до получаса. Если процесс управляется cron’ом, то в 02:05 по расписанию стартует следующий скрипт report.sh, тот читает ещё незаконченный дамп и отправляет пустой отчёт. Ошибку вы заметите только утром.
С Airflow всё иначе: пока задача dump_db не финишировала, зависимый make_report даже не начнётся. Когда дамп завершится успешно, DAG продолжит движение; если же он дважды упадёт подряд, Airflow пометит цепочку как failed и тут же пришлёт вам Telegram‑уведомление со ссылкой на лог.
Cron остаётся отличным будильником для одиночных задач, но когда шагов несколько и они зависят друг от друга, удобнее отдать управление оркестратору. Airflow даёт одну точку правды (DAG), автоматические ретраи, встроенное журналирование и мгновенные алёрты — и всё это пишется на чистом Python, без костылей.
LinuxCamp | Chat | #devops #bymaga
Представьте простую бытовую задачу: каждую ночь нужно
1) выгрузить базу;
2) превратить её в отчёт;
3) отправить результат в S3;
Пока шагов мало, их легко раскидать по crontab. Но рано или поздно что‑нибудь пойдет медленнее обычного, соседний скрипт стартует раньше, отчёт выедет пустым — и вы начинаете расставлять костыли: sleep, «if‑else», ручные письма об ошибках. Так появляется «снежный ком» расписаний, который трудно контролировать.
Что делает Airflow по‑другому
Airflow описывает тот же процесс в виде DAG — направленного ациклического графа. Каждая задача — узел, каждая зависимость — стрелка.
Расписание теперь одно на весь процесс, а порядок шагов Airflow вычисляет сам:
from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime, timedelta
with DAG(
dag_id="nightly_pipeline",
# стартуем раз в сутки
schedule_interval="0 2 * * *",
start_date=datetime(2025, 4, 1),
# не догоняем пропущенные дни
catchup=False
) as dag:
dump = BashOperator(
task_id="dump_db",
bash_command="/noscripts/dump.sh",
retries=2,
retry_delay=timedelta(minutes=10),
# алёрт в чат
on_failure_callback="notify_telegram"
)
transform = BashOperator(
task_id="make_report",
bash_command="/noscripts/report.sh"
)
upload = BashOperator(
task_id="upload_s3",
bash_command="/noscripts/upload.sh"
)
dump >> transform >> upload
Что меняется на практике:
- Автоматические повторы — достаточно указать retries, и упавшая задача перезапустится без ваших правок в коде скрипта.
- Чёткая картинка процессов — в веб‑интерфейсе видно, что именно сейчас выполняется, что уже зелёное, а что покраснело.
- Уведомления «из коробки» — функция on_failure_callback отправит сообщение в Telegram/Slack, как только что‑то рухнет.
- Sensors и ожидание событий — вместо бесконечных while sleep 30 можно сказать: «ждать, пока файл появится в папке», и Airflow займётся этим сам.
В одном из следующих постов мы поднимем Airflow одной командой через Docker‑Compose и соберём первый «hello world» DAG.
Реальный сценарий задержки
Допустим, дамп БД обычно занимает пять минут. В одну из ночей, из‑за нагрузки, он растягивается до получаса. Если процесс управляется cron’ом, то в 02:05 по расписанию стартует следующий скрипт report.sh, тот читает ещё незаконченный дамп и отправляет пустой отчёт. Ошибку вы заметите только утром.
С Airflow всё иначе: пока задача dump_db не финишировала, зависимый make_report даже не начнётся. Когда дамп завершится успешно, DAG продолжит движение; если же он дважды упадёт подряд, Airflow пометит цепочку как failed и тут же пришлёт вам Telegram‑уведомление со ссылкой на лог.
Cron остаётся отличным будильником для одиночных задач, но когда шагов несколько и они зависят друг от друга, удобнее отдать управление оркестратору. Airflow даёт одну точку правды (DAG), автоматические ретраи, встроенное журналирование и мгновенные алёрты — и всё это пишется на чистом Python, без костылей.
LinuxCamp | Chat | #devops #bymaga
👍52🔥11🤔4❤🔥2❤1💯1🗿1
На повестке дня gsettings
Сегодня расскажу вам про чудеса, которые можно вытворять с вашими приложениями благодаря системе хранения конфигураций GSettings. Мне лично эта находка сэкономила кучу времени на проработке способов хранить, заполнять и парсить конфиги.
GSettings - API, которое позволяет приложениям управлять параметрами ключ-значение: сохранять их, изменять и получать. Данные настройки хранятся в бинарном формате, ну а почитать их можно через XML схему, которую должно предоставлять приложение.
И так, очередная задача - нужно реализовать менеджер уведомлений. Запрос следующий: дать пользователю удобный интерфейс по управлению сообщениями сети и добавить общесистемный конфиг, через который можно было бы выставлять глобальные настройки.
Сразу у меня возникли мысли: “Опять этот гемор с парсингом”. Все оказалось проще - GTK приложение, которое использует Glib, может создать объект GSettings, указать имя схемы, в которой будут содержаться настройки и управлять ими.
А-ля, нам нужно дать пользователю возможность отключить ММС-ки о том, что подключение к VPN разорвано. Не вопрос:
1) добавляем в схему (….gschema.xml) дополнительную настройку
2) через get/set вызовы получаем и обновляем данные
Если отработал ивент на уведомление, просто определяем его тип и сверяем со значением конкретной настройки.
Если приложение не предоставляет GUI по управлению GSettings, пользователь может работать с ними либо через одноименную CLI утилиту, либо через GUI менеджер dconf-editor:
После правок, локальный бинарный конфиг, скорее всего, будет лежать в каталоге "~/.config/dconf/":
Если админу нужно указать глобальные настройки для всех пользователей, он может вручную подредактировать схему. Обычно они лежат в "/usr/share/glib-2.0/schemas/":
После того, как дефолтные параметры изменены, XML нужно обязательно скомпилить, т.к. читается именно бинарное представление. Без этого этапа изменения не будут применены:
LinuxCamp | #story
Сегодня расскажу вам про чудеса, которые можно вытворять с вашими приложениями благодаря системе хранения конфигураций GSettings. Мне лично эта находка сэкономила кучу времени на проработке способов хранить, заполнять и парсить конфиги.
GSettings - API, которое позволяет приложениям управлять параметрами ключ-значение: сохранять их, изменять и получать. Данные настройки хранятся в бинарном формате, ну а почитать их можно через XML схему, которую должно предоставлять приложение.
И так, очередная задача - нужно реализовать менеджер уведомлений. Запрос следующий: дать пользователю удобный интерфейс по управлению сообщениями сети и добавить общесистемный конфиг, через который можно было бы выставлять глобальные настройки.
Сразу у меня возникли мысли: “Опять этот гемор с парсингом”. Все оказалось проще - GTK приложение, которое использует Glib, может создать объект GSettings, указать имя схемы, в которой будут содержаться настройки и управлять ими.
А-ля, нам нужно дать пользователю возможность отключить ММС-ки о том, что подключение к VPN разорвано. Не вопрос:
1) добавляем в схему (….gschema.xml) дополнительную настройку
<key name="disable-vpn-disconnect-notification" type="b">
<default>false</default>
<summary>...</summary>
<denoscription>...</denoscription>
</key>
2) через get/set вызовы получаем и обновляем данные
g_settings_set_boolean (applet->gsettings, "disable-vpn-disconnect-notification", state);
g_settings_get_boolean (applet->gsettings, "disable-vpn-disconnect-notification");
Если отработал ивент на уведомление, просто определяем его тип и сверяем со значением конкретной настройки.
Если приложение не предоставляет GUI по управлению GSettings, пользователь может работать с ними либо через одноименную CLI утилиту, либо через GUI менеджер dconf-editor:
$ gsettings set org.gnome.nm-applet disable-connected-notifications "true"
$ sudo apt install dconf-editor
После правок, локальный бинарный конфиг, скорее всего, будет лежать в каталоге "~/.config/dconf/":
~/.config/dconf$ ls
user
Если админу нужно указать глобальные настройки для всех пользователей, он может вручную подредактировать схему. Обычно они лежат в "/usr/share/glib-2.0/schemas/":
$ ls /usr/share/glib-2.0/schemas/
org.gnome.desktop.sound.gschema.xml
org.gnome.nm-applet.gschema.xml
org.gnome.desktop.a11y.gschema.xml
После того, как дефолтные параметры изменены, XML нужно обязательно скомпилить, т.к. читается именно бинарное представление. Без этого этапа изменения не будут применены:
$ sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
LinuxCamp | #story
👍17🔥13❤6❤🔥1
Обновление SteamOS 3.7.3 Preview
После объявления Valve о расширении SteamOS за пределы Steam Deck и запуске публичной беты:
— разработчики продолжают активно улучшать совместимость системы с другими портативными игровыми устройствами.
В марте вышла первая тестовая версия SteamOS 3.7.0, а теперь доступна новая сборка SteamOS 3.7.3 Preview — экспериментальная версия SteamOS с улучшениями.
Изменения:
— Добавлена поддержка ограничения кадровой частоты для дисплеев с переменной частотой обновления (VRR), как встроенных, так и внешних.
— Исправлен сбой, возникавший при отсутствии подключённых дисплеев.
— Добавлена поддержка кнопки питания на портативных устройствах Asus и Lenovo.
— Улучшена поддержка ввода на устройствах Asus и Lenovo.
Интересно следить за развитием этой ОС. Сам декой побаловался и лежит теперь на самой верхней полочке. Там уже, наверное, 100500 апдейтов вышло, надо глянуть👀
LinuxCamp | #news
После объявления Valve о расширении SteamOS за пределы Steam Deck и запуске публичной беты:
— разработчики продолжают активно улучшать совместимость системы с другими портативными игровыми устройствами.
В марте вышла первая тестовая версия SteamOS 3.7.0, а теперь доступна новая сборка SteamOS 3.7.3 Preview — экспериментальная версия SteamOS с улучшениями.
Изменения:
— Добавлена поддержка ограничения кадровой частоты для дисплеев с переменной частотой обновления (VRR), как встроенных, так и внешних.
— Исправлен сбой, возникавший при отсутствии подключённых дисплеев.
— Добавлена поддержка кнопки питания на портативных устройствах Asus и Lenovo.
— Улучшена поддержка ввода на устройствах Asus и Lenovo.
Интересно следить за развитием этой ОС. Сам декой побаловался и лежит теперь на самой верхней полочке. Там уже, наверное, 100500 апдейтов вышло, надо глянуть
LinuxCamp | #news
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥7❤🔥2❤1
Буквально вчера столкнулся с проблемой. Поехал, значит, на отдых и вспомнил под вечер, что надо поработать чуток. Зашел в номер, открыл ноут и начал подключаться к сети. Не думал, что столкнусь с проблемой на таком базовом действии)
Нужно было подключиться с "Debain-based" дистра к открытой сети, в которой авторизация происходила через перенаправление на определенный сайт. Такая штука называется "CaptivePortal".
Попробовал через nm-applet - не сработало. Попробовал через nmcli - аналогичная история. Начал гуглить и нашел вот тут следующее решение:
Команду нужно выполнить после базового подключения к сети. Далее вводишь, что нужно и вуаля, все работает!
LinuxCamp | Chat | #microhelp
Нужно было подключиться с "Debain-based" дистра к открытой сети, в которой авторизация происходила через перенаправление на определенный сайт. Такая штука называется "CaptivePortal".
Попробовал через nm-applet - не сработало. Попробовал через nmcli - аналогичная история. Начал гуглить и нашел вот тут следующее решение:
$ xdg-open http://$(ip --oneline route get 1.1.1.1 | awk '{print $3}')
Команду нужно выполнить после базового подключения к сети. Далее вводишь, что нужно и вуаля, все работает!
LinuxCamp | Chat | #microhelp
🔥30👍17❤🔥7🤔4
Команда chgrp и изменение атрибутов ссылок
В Linux у каждого файла есть владелец и группа. Также описываются права остальных пользователей, которые состоят из трёх пунктов: чтение, запись, выполнение. Для их изменения (определения дефолтных) используется команда umask, для изменения владельца и группы: chown и chgrp. Подробно про группы говорили тут.
Без параметров chgrp просто меняет группу для конкретного файла либо каталога:
И вот тут момент №1 - если вы меняете группу у символьной ссылки, ее атрибуты остаются нетронутыми и аффектится только целевой файл. Для того, чтобы изменить атрибут ссылки, нужно использовать флаг "-h" (аналогично для chown):
Момент №2 - если вы рекурсивно меняете группу для каталога, при обработке ссылки атрибуты выставляются именно для нее, а не файла. Для дереференса ссылок есть 2 флага: "-H" и "-L".
"-H" переходит по ссылкам и меняет атрибуты ресурсов. При переходе на каталог рекурсивная обработка для него прекращается (только каталогу группу поменяем и все). "-L" при переходе на каталог идет рекурсивно и по нему тоже.
LinuxCamp | #utils
В Linux у каждого файла есть владелец и группа. Также описываются права остальных пользователей, которые состоят из трёх пунктов: чтение, запись, выполнение. Для их изменения (определения дефолтных) используется команда umask, для изменения владельца и группы: chown и chgrp. Подробно про группы говорили тут.
Без параметров chgrp просто меняет группу для конкретного файла либо каталога:
$ sudo chgrp avengers file
-rw-rw-r-- 1 parallels avengers file
И вот тут момент №1 - если вы меняете группу у символьной ссылки, ее атрибуты остаются нетронутыми и аффектится только целевой файл. Для того, чтобы изменить атрибут ссылки, нужно использовать флаг "-h" (аналогично для chown):
$ chgrp -h parallels file_ln
lrwxrwxrwx 1 root parallels file_ln -> ../file
Момент №2 - если вы рекурсивно меняете группу для каталога, при обработке ссылки атрибуты выставляются именно для нее, а не файла. Для дереференса ссылок есть 2 флага: "-H" и "-L".
"-H" переходит по ссылкам и меняет атрибуты ресурсов. При переходе на каталог рекурсивная обработка для него прекращается (только каталогу группу поменяем и все). "-L" при переходе на каталог идет рекурсивно и по нему тоже.
$ chgrp -RH www-data /var/www
$ chgrp -RL www-data /var/www
LinuxCamp | #utils
👍20🔥10❤🔥2❤1
Linux roadmap
Набросал тут план изучения Linux для новичков. Давайте фитбек - чего бы добавили, что может быть лишним)
Основные модули:
1. Введение - понимание базовых определений, различий между "Server" и "Desktop" дистрибутивами, умение накатить линуху на виртуальную машину и физическое железо.
2. Терминал и оболочка - понимание того, что из себя представляет оболочка и какие они бывают.
3. Файловая система - разбор дерева каталогов, типов файлов, их атрибутов и прав доступа, дисков и разделов.
4. Пользователи и группы - управление пользователями/группами, работа со спец. файлами "/etc/group" и т.д. Что такое sudo и привилегии администратора.
5. Процессы и программы - понимание различий между понятиями, инструменты мониторинга процессов, управление заданиями, использование сигналов.
6. Демоны и systemd - управление и отладка демонов/сервисов.
7. Работа с пакетами - пакетные менеджеры, подключение репозиториев. Принципы управления пакетами.
8. Переменные оболочки - способы их объявления, знание основных переменных "PATH", "HOME" и т.д.
9. Продвинутая работа с оболочкой - перенаправление ввода/вывода, пайпы, шаблоны, условные списки.
10. Создание bash скриптов - базовый синтаксис, примеры, где может пригодиться набросать свой скрипт для автоматизаций.
11. Логирование и мониторинг - умение отлаживать ошибки системы и софта через syslog и journal.
12. Сети и протоколы - понимание различий между ssh, scp, ftp. Умение передавать данные с клиента на сервер и обратно. Подгрузка файлов с инета через curl и wget.
13. Конфигурация системы - структура графического окружения (wm, dm, композитинг) и его настройка.
14. Сборка софта по исходникам - базовая работа с системами (cmake, meson). Понимание файлов, которые используются для сборки (если к проекту не прилагается нормальный README)
LinuxCamp | Chat | #roadmap
Набросал тут план изучения Linux для новичков. Давайте фитбек - чего бы добавили, что может быть лишним)
Основные модули:
1. Введение - понимание базовых определений, различий между "Server" и "Desktop" дистрибутивами, умение накатить линуху на виртуальную машину и физическое железо.
2. Терминал и оболочка - понимание того, что из себя представляет оболочка и какие они бывают.
3. Файловая система - разбор дерева каталогов, типов файлов, их атрибутов и прав доступа, дисков и разделов.
4. Пользователи и группы - управление пользователями/группами, работа со спец. файлами "/etc/group" и т.д. Что такое sudo и привилегии администратора.
5. Процессы и программы - понимание различий между понятиями, инструменты мониторинга процессов, управление заданиями, использование сигналов.
6. Демоны и systemd - управление и отладка демонов/сервисов.
7. Работа с пакетами - пакетные менеджеры, подключение репозиториев. Принципы управления пакетами.
8. Переменные оболочки - способы их объявления, знание основных переменных "PATH", "HOME" и т.д.
9. Продвинутая работа с оболочкой - перенаправление ввода/вывода, пайпы, шаблоны, условные списки.
10. Создание bash скриптов - базовый синтаксис, примеры, где может пригодиться набросать свой скрипт для автоматизаций.
11. Логирование и мониторинг - умение отлаживать ошибки системы и софта через syslog и journal.
12. Сети и протоколы - понимание различий между ssh, scp, ftp. Умение передавать данные с клиента на сервер и обратно. Подгрузка файлов с инета через curl и wget.
13. Конфигурация системы - структура графического окружения (wm, dm, композитинг) и его настройка.
14. Сборка софта по исходникам - базовая работа с системами (cmake, meson). Понимание файлов, которые используются для сборки (если к проекту не прилагается нормальный README)
LinuxCamp | Chat | #roadmap
🔥65👍30❤6✍4❤🔥1🗿1
Как исправить "rm: cannot remove ‘file’: Device or Resource Busy"?
Бывало же у вас такое - заканчиваешь работать с каким-то ресурсом (файлом/каталогом/устройством), хочешь его удалить и видишь ошибку о том, что он чем-то занят (используется системой либо каким-то процессом).
Тут нужно понять, в чем конкретная причина и чем он задействован: то ли процессом, то ли это, быть может, точка монтирования для какой-то FS…
Распространенных решения вижу 2:
1. Использование команд "lsof + fuser" для определения занятых ресурсов и завершения процессов. Если вы не знаете, какая программа мешает выполнить операцию, используйте lsof:
Если у нас ресурс занимают 2 процесса, можно и через kill все грохнуть. Если их много, можно более автоматизированно - через fuser. Эта команда завершит все процессы, которые что-то используют в целевом каталоге:
После выполнение мы вырубим сразу оба процесса 22331 и 22332.
2. Определение точки монтирования. Это полезно, когда какая-нибудь флешка или внешний диск монтирован в целевой каталог. Узнать, так ли это, можно через команду mount. Допустим, у меня не получается удалить test:
Проверяем, является ли tmpfsdir точкой монтирования:
Вывод говорит о том, что в каталог tmpfsdir примонтирована FS tmpfs. Для успешного выполнения операции нужно размонтировать каталог:
LinuxCamp | Chat | #filesystem
Бывало же у вас такое - заканчиваешь работать с каким-то ресурсом (файлом/каталогом/устройством), хочешь его удалить и видишь ошибку о том, что он чем-то занят (используется системой либо каким-то процессом).
rm: cannot remove 'file-or-directory': Device or resource busy
Тут нужно понять, в чем конкретная причина и чем он задействован: то ли процессом, то ли это, быть может, точка монтирования для какой-то FS…
Распространенных решения вижу 2:
1. Использование команд "lsof + fuser" для определения занятых ресурсов и завершения процессов. Если вы не знаете, какая программа мешает выполнить операцию, используйте lsof:
$ lsof +D Sources/App/
COMMAND PID USER FD NAME
server 22331 xoadmin txt Sources/App/server
client 22332 xoadmin txt Sources/App/client
Если у нас ресурс занимают 2 процесса, можно и через kill все грохнуть. Если их много, можно более автоматизированно - через fuser. Эта команда завершит все процессы, которые что-то используют в целевом каталоге:
$ fuser -k Sources/App/
После выполнение мы вырубим сразу оба процесса 22331 и 22332.
2. Определение точки монтирования. Это полезно, когда какая-нибудь флешка или внешний диск монтирован в целевой каталог. Узнать, так ли это, можно через команду mount. Допустим, у меня не получается удалить test:
$ rm -rf test
rm: cannot remove 'test/tmpfsdir': Device or resource busy
Проверяем, является ли tmpfsdir точкой монтирования:
$ mount | grep test/tmpfsdir
none on /home/u/test/tmpfsdir type tmpfs (rw,relatime,inode64)
Вывод говорит о том, что в каталог tmpfsdir примонтирована FS tmpfs. Для успешного выполнения операции нужно размонтировать каталог:
$ sudo umount test/tmpfsdir
$ rm -rf test
LinuxCamp | Chat | #filesystem
👍33🔥13❤🔥2
Лучшие эмуляторы терминала
Эмулятор терминала - утилита, которая дает доступ к командной оболочке и позволяет нам работать с системой через CLI интерфейс.
Их, на самом деле, не 1 и не 2) Вы, возможно, привыкли к дефолтным эмуляторам оболочки от гнома там и kde. Вдруг вам чего-то в них не хватает, что есть в сторонних...
1. Terminator - ключевая фича заключается в том, что оно позволяет раскидывать свои окна по удобной сетке.
Может пригодиться, если вам не нравится переключаться по вкладкам или плодить много окон. Более подробно про него вот тут.
2. Tilix - поддерживает систему “drag and drop”. Вы можете перетащить файл в окно терминала и получите на выходе полный путь в строке ввода.
Также он удобно структурирует окна списком, по которому можно ходить через горячие клавиши. Как и Terminator может разбивать окна по сетке.
3. Guake - неплохо кастомизируется через встроенный менеджер. Сворачивается и разворачивается по горячим клавишам.
4. Alacritty - отличает от остальных его тот факт, что он “GPU-accelerated”. Это говорит о том, что для рендера он использует видюху => работает плавнее. Также он кроссплатформенный - запускается на Windows/Linux/MacOS.
Так как для рендера используется OpenGL, эмулятор позволяет более продвинуто настроить внешний вид и добавить, например, прозрачность.
Кастомизируется он через файл. Более подробно про его настройку можете почитать тут. Пример готового конфига приложу по ссылке. Также найти его можно на гите проекта в релизах.
Инструкцию по установке на Ubuntu также прикладываю.
LinuxCamp | Chat | #top
Эмулятор терминала - утилита, которая дает доступ к командной оболочке и позволяет нам работать с системой через CLI интерфейс.
Их, на самом деле, не 1 и не 2) Вы, возможно, привыкли к дефолтным эмуляторам оболочки от гнома там и kde. Вдруг вам чего-то в них не хватает, что есть в сторонних...
1. Terminator - ключевая фича заключается в том, что оно позволяет раскидывать свои окна по удобной сетке.
Может пригодиться, если вам не нравится переключаться по вкладкам или плодить много окон. Более подробно про него вот тут.
$ sudo apt install terminator
2. Tilix - поддерживает систему “drag and drop”. Вы можете перетащить файл в окно терминала и получите на выходе полный путь в строке ввода.
Также он удобно структурирует окна списком, по которому можно ходить через горячие клавиши. Как и Terminator может разбивать окна по сетке.
$ sudo apt install tilix
3. Guake - неплохо кастомизируется через встроенный менеджер. Сворачивается и разворачивается по горячим клавишам.
$ sudo apt install guake
4. Alacritty - отличает от остальных его тот факт, что он “GPU-accelerated”. Это говорит о том, что для рендера он использует видюху => работает плавнее. Также он кроссплатформенный - запускается на Windows/Linux/MacOS.
Так как для рендера используется OpenGL, эмулятор позволяет более продвинуто настроить внешний вид и добавить, например, прозрачность.
Кастомизируется он через файл. Более подробно про его настройку можете почитать тут. Пример готового конфига приложу по ссылке. Также найти его можно на гите проекта в релизах.
Инструкцию по установке на Ubuntu также прикладываю.
LinuxCamp | Chat | #top
👍28✍7🔥7❤3🥴1
Топ 5 полезных приложений на Linux
В линухе хоть и меньше толковых приложений, чем в MacOS или Windows, но они все еще есть и очень выручают:
1. Todoist - очень популярный планировщик задач. Он кроссплатформенный, в свое время использовал и на android и на ios. Ставится он через snap либо AppImage:
Есть платный и бесплатный формат использования. Мне от него требовалось только приоритизировать задачи и раскидывать их на неделю - все это включено даром.
2. Standard Notes - приложение для заметок, которое может выступать некой заменой obsidian и notion. Также ставится на разные ОС. Отлично подходит, если вы пишите какие-то сценарии либо длинные лонгриды - их удобно менеджерить. Ставится через AppImage, ссылку приложил.
3. KDE Connect - входит в десктопное окружение Plasma. Позволяет управлять мобилкой через десктоп: просматривать уведомления, уровень заряда, передавать файлы и т.д. В некоторых дистрах предоставлена по дефолту.
4. TimeShift - утилита для создания бэкапов системы (FS, настроек, конфигураций). Для Linux это может быть очень полезно, т.к. нередко новички в процессе разбирательств что-то лишнее тыкают и все ломают. Нашел отличный туториал по ее использованию. Установка:
5. Syncthing - используется для синхронизации файлов между системами. Предположим, мы постоянно работаем с каталогом Documents на компе и ноуте. Если обе системы используют syncthing и следят за Documents, то на них всегда будет актуальное содержимое этого каталога. Установка тут. Еще докину ссылку на информативный туториал.
LinuxCamp | #top
В линухе хоть и меньше толковых приложений, чем в MacOS или Windows, но они все еще есть и очень выручают:
1. Todoist - очень популярный планировщик задач. Он кроссплатформенный, в свое время использовал и на android и на ios. Ставится он через snap либо AppImage:
$ sudo snap install todoist
Есть платный и бесплатный формат использования. Мне от него требовалось только приоритизировать задачи и раскидывать их на неделю - все это включено даром.
2. Standard Notes - приложение для заметок, которое может выступать некой заменой obsidian и notion. Также ставится на разные ОС. Отлично подходит, если вы пишите какие-то сценарии либо длинные лонгриды - их удобно менеджерить. Ставится через AppImage, ссылку приложил.
3. KDE Connect - входит в десктопное окружение Plasma. Позволяет управлять мобилкой через десктоп: просматривать уведомления, уровень заряда, передавать файлы и т.д. В некоторых дистрах предоставлена по дефолту.
4. TimeShift - утилита для создания бэкапов системы (FS, настроек, конфигураций). Для Linux это может быть очень полезно, т.к. нередко новички в процессе разбирательств что-то лишнее тыкают и все ломают. Нашел отличный туториал по ее использованию. Установка:
$ sudo apt install timeshift
5. Syncthing - используется для синхронизации файлов между системами. Предположим, мы постоянно работаем с каталогом Documents на компе и ноуте. Если обе системы используют syncthing и следят за Documents, то на них всегда будет актуальное содержимое этого каталога. Установка тут. Еще докину ссылку на информативный туториал.
LinuxCamp | #top
👍25🔥10❤5🤪2💊1
GE-Proton 10-2: исправления для Windows игр на Linux, SteamOS (Steam Deck)
Proton — специальный «прослойка» от Valve, которая позволяет запускать Windows-игры на Linux. Сделана на основе Wine.
GE-Proton (GloriousEggroll Proton) — модифицированная версия Proton, которую делает разработчик с ником GloriousEggroll.
Она обновляется быстрее, включает больше фиксиков, свежие патчи и поддержку некоторых проблемных игр, которые не заводятся на официальном проекте.
Основные изменения в GE-Proton:
— Исправлена ошибка в скрипте, вызванная отсутствующей запятой, что приводило к проблемам с префиксами. Мем😁
— Добавлен патч для поддержки прокрутки с тачпада в WineWayland
— Добавлены патчи, позволяющие запускать больше лаунчеров в среде Wayland (epic, battlenet, star citizen)
— Обновлена библиотека xalia с включением изменений из основного репозитория
Вот ссылка на релиз 10-2. В гите можно подробнее ознакомиться с проектом и правками📱
LinuxCamp | #news
Proton — специальный «прослойка» от Valve, которая позволяет запускать Windows-игры на Linux. Сделана на основе Wine.
GE-Proton (GloriousEggroll Proton) — модифицированная версия Proton, которую делает разработчик с ником GloriousEggroll.
Она обновляется быстрее, включает больше фиксиков, свежие патчи и поддержку некоторых проблемных игр, которые не заводятся на официальном проекте.
Основные изменения в GE-Proton:
— Исправлена ошибка в скрипте, вызванная отсутствующей запятой, что приводило к проблемам с префиксами. Мем
— Добавлен патч для поддержки прокрутки с тачпада в WineWayland
— Добавлены патчи, позволяющие запускать больше лаунчеров в среде Wayland (epic, battlenet, star citizen)
— Обновлена библиотека xalia с включением изменений из основного репозитория
Вот ссылка на релиз 10-2. В гите можно подробнее ознакомиться с проектом и правками
LinuxCamp | #news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍9❤🔥3😁1
Приводим хаос данных к порядку
Сегодня мы говорим о команде sort. Утилита выводит текстовые строки в определенном порядке. С помощью нее может быть отсортировано содержимое файла либо вывод какой-либо команды. Основные опции можете просмотреть на OpenNet.
Примеры использования
Создадим файл с несколькими строками, на котором и будем проверять возможности утилиты. Кста, заполнить его из CMD можно вот так:
Опция "-e" указывает команде, что нужно обрабатывать спецсимволы, а "\n" у нас - спецсимвол перевода строки. Теперь выполним сортировку строк:
После выполнения команды сам файл никак не поменяется: sort просто получает на вход данные с ресурса и итог кидает в stdout. Посмотрим на несколько принципов, по которым выполняется сортировка:
- Строки с цифрами размещаются выше других строк
- Строки, начинающиеся с букв нижнего регистра размещаются выше
- Сортировка выполняется в соответствии алфавиту
- Строки сначала сортируются по алфавиту, а уже вторично по другим правилам.
Удаление дубликатов
100% полезная опция "-u". Она удаляет дубликаты. Представьте, вам нужно проверить логи в "/var/log/syslog", которые туда посылает образный "демон". Если он пишет туда много одинаковых, вероятно, вам не нужен лишний спам. Для предварительной очистки вывода используйте "-u":
Сортировка по колонке
Давайте упорядочим вывод по конкретному полю. Для этого указываем флаг "-k" с номером колонки. Сейчас будем работать с названиями каталогов:
Сортировка по номеру
Входные данных также можем отсортировать по числовому значению. Для этого используем "-n":
LinuxCamp | #utils
Сегодня мы говорим о команде sort. Утилита выводит текстовые строки в определенном порядке. С помощью нее может быть отсортировано содержимое файла либо вывод какой-либо команды. Основные опции можете просмотреть на OpenNet.
Примеры использования
Создадим файл с несколькими строками, на котором и будем проверять возможности утилиты. Кста, заполнить его из CMD можно вот так:
$ echo -e "computer\nmouse\nLAPTOP\ndata" > test.txt
$ cat test.txt
computer
mouse
LAPTOP
data
Опция "-e" указывает команде, что нужно обрабатывать спецсимволы, а "\n" у нас - спецсимвол перевода строки. Теперь выполним сортировку строк:
$ sort test.txt
computer
data
LAPTOP
mouse
После выполнения команды сам файл никак не поменяется: sort просто получает на вход данные с ресурса и итог кидает в stdout. Посмотрим на несколько принципов, по которым выполняется сортировка:
- Строки с цифрами размещаются выше других строк
- Строки, начинающиеся с букв нижнего регистра размещаются выше
- Сортировка выполняется в соответствии алфавиту
- Строки сначала сортируются по алфавиту, а уже вторично по другим правилам.
Удаление дубликатов
100% полезная опция "-u". Она удаляет дубликаты. Представьте, вам нужно проверить логи в "/var/log/syslog", которые туда посылает образный "демон". Если он пишет туда много одинаковых, вероятно, вам не нужен лишний спам. Для предварительной очистки вывода используйте "-u":
$ sort -u /var/log/syslog
Сортировка по колонке
Давайте упорядочим вывод по конкретному полю. Для этого указываем флаг "-k" с номером колонки. Сейчас будем работать с названиями каталогов:
$ ls -l | sort -k9
... 6 user user 4096 дек 6 14:29 Android
... 3 user user 4096 янв 14 22:18 Desktop
... 5 user user 12288 янв 15 14:59 Downloads
... 7 user user 4096 янв 13 11:42 Lightworks
Сортировка по номеру
Входные данных также можем отсортировать по числовому значению. Для этого используем "-n":
$ ls -l | sort -nk2
... 5 user user 12288 янв 15 14:59 Downloads
... 6 user user 4096 дек 6 14:29 Android
... 7 user user 4096 июн 10 2015 Sources
... 8 user user 12288 янв 11 12:33 Pictures
LinuxCamp | #utils
👍29🔥10❤7
Шпора по флагам rsync
Rsync - программка, которую можно использовать для синхронизации файлов и каталогов с локального компьютера на удаленный и наоборот. Чем-то напоминает scp.
Взаимодействием с сервером возможности утилиты не ограничиваются. Все операции можно выполнять и локально. По умолчанию rsync копирует ресурсы без учета предыдущего содержимого целевого каталога.
Например, если вы перенесли каталог d, содержащий файлы a и b, на машину, на которой был файл d/c, то после копирования сервер будет содержать d/a, d/b и d/c.
Чтобы создать точную копию исходного каталога, необходимо из целевого каталога удалить не существующие в исходном каталоге файлы, например d/c в примере:
Посмотрим на еще 1 пример:
В результате выполнения, каталоги "dir1, dir2 и dir3", вместе со всем их содержимым, будут рекурсивно скопированы в каталог backup.
Если какие-то файлы уже есть в каталоге backup, и не были изменены, они будут пропущены.
Исключение файлов и каталогов
Еще одной значительной фичей rsync является способность исключать файлы и каталоги из процесса передачи.
Например, ты хочешь перенести локальный каталог src на хост и при этом исключить все данные с именем .git. Можно сделать следующим образом:
Чтобы базовые флаги всегда были под рукой, собрал небольшую шпору, сохраняем)
LinuxCamp | #utils
Rsync - программка, которую можно использовать для синхронизации файлов и каталогов с локального компьютера на удаленный и наоборот. Чем-то напоминает scp.
$ rsync file1 file2 ... user@host:dest
$ rsync -a dir host:dest_dir
Взаимодействием с сервером возможности утилиты не ограничиваются. Все операции можно выполнять и локально. По умолчанию rsync копирует ресурсы без учета предыдущего содержимого целевого каталога.
Например, если вы перенесли каталог d, содержащий файлы a и b, на машину, на которой был файл d/c, то после копирования сервер будет содержать d/a, d/b и d/c.
Чтобы создать точную копию исходного каталога, необходимо из целевого каталога удалить не существующие в исходном каталоге файлы, например d/c в примере:
$ rsync -a --delete dir host:dest_dir
Посмотрим на еще 1 пример:
$ rsync -avh --del --progress dir1 dir2 dir3 backup
В результате выполнения, каталоги "dir1, dir2 и dir3", вместе со всем их содержимым, будут рекурсивно скопированы в каталог backup.
Если какие-то файлы уже есть в каталоге backup, и не были изменены, они будут пропущены.
Исключение файлов и каталогов
Еще одной значительной фичей rsync является способность исключать файлы и каталоги из процесса передачи.
Например, ты хочешь перенести локальный каталог src на хост и при этом исключить все данные с именем .git. Можно сделать следующим образом:
$ rsync -a --exclude=.git src host:
Чтобы базовые флаги всегда были под рукой, собрал небольшую шпору, сохраняем)
LinuxCamp | #utils
🔥22👍17❤3
Пополнение софта в библиотеке
Компания Fender, известная своими гитарами и аудиооборудованием, представила новое приложение для записи и обработки звука – Fender Studio. Оно доступно на нашем Linux).
Fender Studio базируется на профессиональной DAW Studio One Pro (приложение для цифровой аудиосистемы), но предлагает упрощённый интерфейс.
Что предлагает Fender Studio?
- Интуитивный интерфейс для музыкантов, подходящий как новичкам, так и профессионалам.
- Многодорожечную запись с поддержкой VST-плагинов.
- Встроенные инструменты для обработки гитарного звука, включая эффекты и усилители.
- Совместимость с ALSA и PipeWire.
Приложение доступно для бесплатной загрузки в формате Flatpak с официального сайта. Появление утилиты – знак растущего интереса крупных компаний к открытой платформе.
LinuxCamp | #news
Компания Fender, известная своими гитарами и аудиооборудованием, представила новое приложение для записи и обработки звука – Fender Studio. Оно доступно на нашем Linux).
Fender Studio базируется на профессиональной DAW Studio One Pro (приложение для цифровой аудиосистемы), но предлагает упрощённый интерфейс.
Что предлагает Fender Studio?
- Интуитивный интерфейс для музыкантов, подходящий как новичкам, так и профессионалам.
- Многодорожечную запись с поддержкой VST-плагинов.
- Встроенные инструменты для обработки гитарного звука, включая эффекты и усилители.
- Совместимость с ALSA и PipeWire.
Приложение доступно для бесплатной загрузки в формате Flatpak с официального сайта. Появление утилиты – знак растущего интереса крупных компаний к открытой платформе.
LinuxCamp | #news
👍20🔥9❤🔥2❤2😁1