LINUX.ORG.RU

Избранные сообщения Imker

Docker сожрал диск

 ,

Собственно, сабж

root@maumyrtille:~# du -shc /var/lib/docker/*
116K	/var/lib/docker/buildkit
5.4G	/var/lib/docker/containers
4.0K	/var/lib/docker/engine-id
27M	/var/lib/docker/image
236K	/var/lib/docker/network
6.9G	/var/lib/docker/overlay2
469M	/var/lib/docker/plugins
4.0K	/var/lib/docker/runtimes
4.0K	/var/lib/docker/swarm
8.0K	/var/lib/docker/tmp
554M	/var/lib/docker/volumes
14G	total
root@maumyrtille:~# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          22        21        2.842GB   236.8MB (8%)
Containers      25        24        1.212MB   0B (0%)
Local Volumes   19        16        564.3MB   0B (0%)
Build Cache     0         0         0B        0B
root@maumyrtille:~# docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - unused build cache

Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

Чем занято более 10 ГБ?

KivApple
()

Переезжаем на Fish

 , ,

Переезжаем на Fish

Fish — это современный командный интерпретатор, недавно переписанный на Rust, который не требует особой настройки, поддерживая из коробки автодополнение и подсветку синтаксиса. Является лучшим Unix SHELL по версии Slant.

( читать дальше... )

rtxtxtrx
()

Какие есть альтернативы pip, чтобы каждый venv не весил гигабайты?

 ,

Я устал от этого:

$ du -hs _venv*
7.3G	_venv.llm
7.4G	_venv.owui
7.2G	_venv.sd

Можно же сделать симлинками из какого-то общего "хранилища", но я задолбаюсь делать это вручную. Но не может быть такого, чтобы до меня этого уже не придумали!

В идеале чтобы оно было в репозиториях Debian 12. Ну или хотя бы умело самообновляться.


Решето
Решено

mord0d
()

Настраиваем для браузера несколько выходов на внешние прокси и удобно переключаемся между ними

 , , , ,

Почему не VPN

Как выяснилось, очень неудобно когда включив на компьютере VPN оказывается, что половина сайтов отказываются работать там, куда он ведёт. В голову пришла идея, что если бы в каждой вкладке браузера были свои уникальные параметры соединения, это был бы идеальный вариант.

Суть решения

Дело в том, что мне нравятся Google Chrome и Microsoft Edge, но вот беда, нормально работать с прокси они не умеют. Поэтому, проведя некоторые изыскания, я смог создать рабочий конфиг на основе privoxy и плагина для упомянутых браузеров Proxy SwitchyOmega.

privoxy обеспечивает socks5-соединение, а Proxy SwitchyOmega даёт возможность менять параметры подключения в любой момент, в том числе – автоматически по выбранному шаблону, при этом может работать с несколькими внешними прокси.

( читать дальше... )

unclestephen
()

Easy Switcher - переключатель раскладки клавиатуры

 ,

Лет 10 у меня на компе жил и работал gxneur. Еще на Ubuntu 20.04 он кое-как работал в ручном режиме, но после недавнего перехода на 22.04 (да, затянул), завести мне его уже не удалось. Пару недель я страдал без переключателя, и в итоге решил написать свой, вот, решил поделиться:

Скачать: https://sourceforge.net/projects/easy-switcher/files/

Реализованы следующие функции:

  • переключение раскладки клавиатуры с корректировкой уже введенного текста.

  • 2 режима корректировки:

      - при нажатии Break корректируется последнее введенное слово.
      - при нажатии Shift + Break корректируется последняя введенная фраза.
    
  • режим настройки.

  • режим отладки.

Программа устанавливается как демон и управляется systemctl. В отличие от xneur, работает не через xkb, а читает устройство ввода с ядра, и поэтому не зависит от графического сервера и рабочего окружения. В теории должна работать на любых ОС с ядром linux, и не будет глючить с выходом обновлений ОС и ДЕ. (время покажет, пока это предположение)

Как работает? Программа ловит нажатия клавиш, а при нажатии Break стирает написанное, меняет раскладку, и пишет заново. Смена раскладки происходит эмуляцией нажатия клавиши, которую нужно прописать в конфиге. Если для смены раскладки вы используете комбинацию клавиш, то нужно в настройках ОС добавить дополнительную клавишу смены раскладки (в kde это можно сделать нативно, а в gnome - например с помощью gnome tweak tool). В моей системе для смены раскладки используется клавиша Win.

Проверялось на Ubuntu 22.04, релиз будем считать альфа, возможны баги.

Устанавливаем пакет, затем:

easy-switcher --configure
easy-switcher --install
systemctl enable easy-switcher
systemctl start easy-switcher

ЗЫ: конфиг лежит здесь: /etc/easy-switcher/default.conf. Пояснения имеются. (первоначально лучше заполнить его с помощью команды easy-switcher –configure)

freemind
()

Что за тип HASH у пароля из shadow $5hWbgtJAD42g?

 ,

Привет

У роутера в shadow файле вот такакой пароль
root:$5hWbgtJAD42g:12571:0:99999:7:::

Что это за тип такой? Согласно мануалу $5 это sha256, но там должно быть $5$.... и значительно длинее...

Это что-то кастомное?

Spider55
()

Долго сканируется домашняя директория

 

Здравствуйте!

После того, как я насоздавал много мелких файлов в хомяке (миллион), потом я их конечно удалил, но теперь долго сканируется домашняя директория.

Вывод tune2fs:

Filesystem volume name:   <none>
Last mounted on:          /home
Filesystem UUID:          73c415e9-aa30-417f-9433-6de5b4a8445b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              65847296
Block count:              263370752
Reserved block count:     13168537
Overhead clusters:        4413151
Free blocks:              33788135
Free inodes:              61602633
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      961
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat Nov  5 14:21:49 2022
Last mount time:          Mon Jan 27 08:42:02 2025
Last write time:          Mon Jan 27 10:42:37 2025
Mount count:              2
Maximum mount count:      -1
Last checked:             Sun Jan 26 08:26:02 2025
Check interval:           0 (<none>)
Lifetime writes:          7930 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
First orphan inode:       59568643
Default directory hash:   half_md4
Directory Hash Seed:      3e157277-011c-4847-beec-74ba303676ec
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0x692d4d48

Вывод ls -l в хомяке:

итого 113484
drwxr-x---  365 dmitriys dmitriys 116183040 янв 27 10:58 dmitriys
drwx------.   2 root     root         16384 ноя  5  2022 lost+found
drwx------   37 dmitriys dmitriys      4096 янв 25 19:45 user

Буду очень благодарен, если поможете соптимизировать директорию. Файловая система ext4.

dmitriys
()

Проблема свободного места на диске под UBUNTU

 

Добрый вечер. Столкнулся с проблемой нехватки места на основном дисе. Стоит 1 тр жесткий диск, программ установлено Server Ubuntu 22.04? Posgress и 1C Сервер. Всего на 20 гб. В системе показывает, что свободно 50 гб, 800 гб занято непонятно чем. Пробовал очищать от логов и удаленных файлов, не помогло. может 1с логами заваливает? Папок больше 5-6 гб нет. Может кто подскажет что делать. Просьба не умничать а предложить решение. Я в линуксе новичёк. Спасибо.

Essen
()

Хочу говорить про Bash

 

Для себя уже навалял кучку полезных скриптиков и походу изучения bash периодически их перечитываю, и что-то там допиливаю, но понял, что надо что-то посложнее попробовать и этакое поближе к программированию.

Решил попробовать написать программку, которая удаляет дубликаты строк из .bash_history (там более 7000 строк у меня). Мне это показалось достойной задачкой для начинающего башиста, хотя и (может быть) довольно бесполезной. Кстати, есть такая программа shell-history-cleaner (кажется на расте написана, давно себе собрал, работает, но видимо заброшена автором), я пользуюсь, но попробовать свои силы надо было.

В результате мне удалось сделать задуманное, но хочется поговорить и о «неудачных» вариантах, которые может быть были бы более удачными, если бы я больше знал о bash и linux вообще, так что категорически приветствуется критика и подсказки более правильных решений или каких-нибудь хитростей командной строки.

Так как-то сложилось, что я упорно откладывал изучение массивов на потом, и когда наконец более-менее разобрался с индексированным массивом, то сразу приступил к делу, чтобы заодно закрепить прочитанное в книжках, поэтому первый «неудачный» вариант будет об этом.

Программа рабочая, делает дело, но долго. Мой файл перемалывает за минуту с небольшим, при этом нагружая одно виртуальное ядро процессора на 100%. Зная лоровские нарративы об ущербности bash как языка программирования, я подумал, что вот и столкнулся с подобной ущербностью, поэтому просто искал возможность хоть как-то оптимизировать процесс.

Я не знаю никаких алгоритмов, так что рассудил так: надо взять (последнюю) строку, удалить дубликаты, строку положить в файл и так по кругу.

file=$1
mapfile -t list < <(grep -v '^$' $file)
while ((${#list[*]})); do
    line=${list[-1]}
    unset list[-1\]
    for i in ${!list[*]}; do
        [[ $line == "${list[i]}" ]] &&
            unset list[i\]
    done
    final+=("$line")
done
printf '%s\n' "${final[@]}" | tac > $file

Для таких же любителей как я поясню идею кода. На его краткость отлично повлиял тот факт, что в истории командной строки надо сохранять последние уникальные строки, то есть работать надо с конца файла, а у индексированных массивов как раз есть стабильная ссылка на последний индекс: array[-1]. То есть не надо ничего переворачивать.

Как я понимаю, самое тугое место в скрипте — сравнение строк, и что-то более быстрых вариантов походу нет. Далее надо думать о многопоточности, но я пока до этого не дозрел.

Поскольку на данном этапе я застрял и вроде бы ясно, что тема с массивами как-то всё усложняет, то решил написать скриптик в стиле unix-way, и искренне полагал, что это будет правильным решением задачки, ведь утилиты все написаны суровыми дядьками на Си, и там всё без дураков — быстро и надёжно. Пришла идея отбросить всю эту возню с поиском и удалением, а просто взять всё — и отфильтровать.

file=$1
list=$(tac $file | grep -v '^$')
while [[ $list ]]; do
    read -r line <<< $list
    list=$(grep -Fxv "$line" <<< $list)
    echo "$line"
done | tac > $file

Чтобы уважаемый лорчанин не хельпал ключи -F -x, напомню: F — читает regex буквально, а x — помещает выражение между ^$, иначе пришлось бы использовать ключ -P (perlre) и выражение выглядело бы как говно: "^\Q$line\E$", а работало бы ещё медленней, возможно, но это не точно. (кстати, я был весьма разочарован узнать, что с sed такое вообще не провернуть — никак не заставить подстановку читать буквально).

Итак, на короткой дистанции (разумеется, у меня был короткий вариант файла для тестов) этот скрипт почти в два раза обогнал предыдущий, но — что было для меня полнейшим разочарованием! — он совершенно заткнулся даже на средней дистанции (нагружая процессор на четверть, но размазано по потокам), то есть я его тупо прервал на какой-то там 10-ой минуте, так что о проверке на полном файле речи уже не шло. Как это понимать — не знаю, поясните. 1000 строк он смолол где-то за секунду с небольшим, а 3000 — уже застрял.

Ладно, пока не было новых идей, прочитал главу про ассоциативные массивы и сразу почуял, что это походу то, что мне надо, но я не ожидал, что настолько! Свойство хеша не дублировать индексы как будто специально создано для решения этой задачки. Быстро стало понятно, что надо просто переложить строки из обыкновенного массива в индексы хеша, а в значения хеша — номера индексов строк из обыкновенного массива.

file=$1
mapfile -t list < <(grep -v '^$' $file)
declare -A hash
for i in ${!list[*]}; do
    hash[${list[i]}]=$i
done
for i in "${!hash[@]}"; do
    final[${hash[$i]}]="$i"
done
printf '%s\n' "${final[@]}" > $file

Это было круто! Нет смысла даже говорить о времени выполнения этой программы, она работает почти мгновенно, менее двух десятых секунды.

Получается на bash таки можно что-то программировать и оно может работать быстро.


UPD

Наконец подсказали, что во втором скрипте у меня ошибка: read -r очищает строку от пробельных символов по краям, поэтому grep её не находит и получается бесконечный цикл. Спасибо @mky: Хочу говорить про Bash (комментарий)
Теперь этот скрипт переваривает тот же файл за 15-16 секунд!

file=$1
list=$(tac $file | grep -v '^$')
while [[ $list ]]; do
    IFS=$'\n' read -r line <<< $list
    list=$(grep -Fxve "$line" <<< $list)
    echo "$line"
done | tac > $file

UPD2

Спасибо анону, подкинул идею отфильтровать хешем в один проход: Хочу говорить про Bash (комментарий)

file=$1
mapfile -t list < <(tac $file | grep -v '^$')
declare -A hash
for i in "${list[@]}"; do
    [[ ${hash[$i]} ]] && continue
    hash[$i]=added
    final+=("$i")
done
printf '%s\n' "${final[@]}" | tac > $file

UPD3

Продолжаю благодарить анона, что замотивировал таки раскурить sort. Итак, почти самый шустрый вариант:

file=$1
list=$(< $file \
    grep -vn '^$' |
    tac |
    sort -t: -k2 -u |
    sort -t: -k1,1n |
    cut -d: -f2-)
echo "$list" > $file

На моём компе меньше трёх сотых секунды!


UPD4

Дошли руки до AWK и это походу победитель на скорость в стиле unix-way (анон давал такой рецепт в треде).

file=$1
list=$(tac $file |
    grep -v '^$' |
    awk '!added[$0]++')
tac <<< $list > $file

На моём компе — девять тысячных секунды!

papin-aziat
()

Как проверить количество использованного трафика в amazon ec2?

 , ,

Я создал инстанс t2 micro, недавно узнал что там ограничение трафика в 15гб на месяц. Вопрос, как и где посмотреть сколько уже было использовано данных или сколько осталось?

Может существуют на самом Линуксе программы, которые показывают, сколько ушло с сервера трафика?

truebin
()

vokoscreenNG 4.4.0

 , , , ,

vokoscreenNG 4.4.0
Группа Мультимедиа

1 января состоялся выпуск vokoscreenNG 4.4.0 — кроссплатформенной программы для записи видео c экрана и веб-камеры. Приложение написано на языке C++ с использованием фреймворка Qt 6.6 и распространяется по лицензии GNU GPLv2.

( читать дальше... )

>>> Больше скриншотов

>>> Список всех изменений (volkoh.de)

dataman
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 1

 , ,

ВСТУПЛЕНИЕ

Звуковая система PipeWire принесла, без преувеличения, революцию в мир десктопно-мультимедийного Linux. Наконец то эта ОС получила продуманную, сделанную по уму понимающими в теме людьми, и сделанную качественно звуковую систему. Многие ее возможности присутствовали и раньше, в других более старых звуковых системах, но в PipeWire они собраны воедино и сформировали целую единую платформу, на которой можно реализовать огромное количество самых разных задач.

Но в пользовательской среде, эта революция практически не заметна, часто можно встретить мнение вида «ну играет ютуб и играет, мне хватает». Поэтому я решил сделать небольшой цикл статей, посвященный более продвинутому использованию PipeWire, раскрывающему его, без преувеличения, поразительные возможности. (Ну и чтобы изучить их самому в процессе, хехехе).

( читать дальше... )

James_Holden
()

Профессиональный видеомонтаж в Davinci Resolve под Linux — начало работы

 ,

Davinci Resolve/Davinci Resolve Studio — это профессиональная проприетарная программа для полного цикла видеомонтажа с обвесом. Прямой конкурент Adobe Premier + After Effects + Audition. Именно так, включает в себя функциональность всех трёх пакетов. Сильные стороны: чуть ли не единственное решение для работы с цветом в принципе, активное использование видеоадаптера, приятная ценовая политика — бесплатной версии хватит всем, платная стоит $300 единоразовым платежом. И конечно поддержка Linux, которой у Adobe, кажется, не будет никогда.

( читать дальше... )

Dispetcher14
()

MacOS внедряет запрет на запуск стороннего софта

 , , ,

Привет, ЛОР!

Не знаю, как местные макоюзеры об этом ещё не отписались, но в общем сабж. Начиная c MacOS 15.1, из системы по-умолчанию убрана поддержка запуска неподписанных программ и, что важно, из настроек убрана даже опция, отключавшая такое поведение. Пока что проверку подписи всё можно можно отключить, выполнив spctl --master-disable из под рута, но общая тенденция показывает, что скоро запуск Emacs на макбуке будет фантастикой, а не реальностью. Такие дела :(

Найдено тут: https://www.osnews.com/story/141055/bug-or-intentional-macos-15-1-completely-removes-ability-to-launch-unsigned-applications/

hateyoufeel
()

Дедупликация в Btrfs

 ,

Дедупликация в Btrfs

Btrfs — это замечательная файловая система, главными фишками которой являются легковесные снапшоты, реализуемые через Copy-On-Write (COW), и сжатие. Она показала высокую надежность и стабильность, и именно поэтому она включена в ядро Linux. Однако, даже наличие COW не позволяет избежать избыточности данных на уровне блоков.

( читать дальше... )

rtxtxtrx
()

Готовый рецепт по настройке спящего в ОЗУ (s3) режима на ноутбуке MAIBENBEN x558

 , , решено

По умолчанию ноутбук идет с установленной Ubuntu 22.02 на m2 накопителе. Проблема в том что вроде все работает кроме режима сна (S3) .
Но в этой модели внедрили новинку -режим S0iX ,который сейчас еще плохо потдерживаеться в Linux .По умолчанию при работе на встроенной AMD интегральной карте -при нажатии на кнопку сон -засыпает но не просыпаеться,черный экран,на клавиши вообще не реагирует.

Решение -сносим предустановленный дистрибутив,переходим на более свежую версию *untu LTS 24.04. В свежеустановленном дистрибутиве удаляем установленный по умолчанию пакет xserver-xorg-video-nouveau и возможно xserver-xorg-video-nouveau-hwe-18.04 ,а так как остаються конфликтные libdrm-nouveau2 (их из за зависимостей трудно удалить) вносим в /etc/modprobe.d/ blacklist-nouveau.conf :
blacklist nouveau
options nouveau modeset=0
Также блокируем конфликтный драйвер vesafb. В /etc/modprobe.d/blacklist framebuffer.conf редактируем (убираем #) blacklist vesafb
Разрешаем AMD микрокод чистим файл ,(оставляем пустым) /etc/modprobe.d/amd64-microcode-blacklist.conf .Переписываем загрузочный файл initrd.img ,даем команду от root update-initramfs -u .Перезагружается и затем ставим метапакет nvidia-driver-550-open и все ОБЯЗАТЕЛЬНЫЕ зависимости + пакет switcheroo-control .Через приложения nvidia-settings,nvidia-smi и по желанию любой 3д тест убеждаемся что все работает (при необходимости переключаемся на NVIDIA командой switcherooctl ) и если всё нормально перезагружаемся. Заходим в UEFI и переключаемся на nvidia карточку [dGPU only].
Теперь по идее должно засыпать и просыпаться от кнопки по умолчанию Zz.
На работу вентиляторов не обращайте внимание, отключатся где то через 3-5 минут.

maximnik0
()

Делаем из Vim IDE

 , ,

Делаем из Vim IDE

В стародавние времена когда деревья были большими, трава зеленее, а мороженное стоило по 10 копеек, на Земле жили динозавры, и эти динозавры программировали в Vim.

( читать дальше... )

rtxtxtrx
()

смена курсора при смене раскладки

 , ,

привет. реально ли менять курсор при смени раскладки в linux?

например DMZ-Black на DMZ-White

adeptubuntovec
()

Настройка VS Code для работы с Python

 , , , ,

Настройка VS Code для работы с Python

VS Code — это мощный инструмент для разработки на Python, который легко настроить для работы с такими полезными утилитами, как pylint, black и isort. Эти инструменты помогут поддерживать чистоту кода, единый стиль и упорядоченность импортов. Для поиска и устранения ошибок пригодится встроенный отладчик debugpy, обеспечивающий удобный процесс дебага. В дополнение ко всему можно подключить искусственного помощника для ускорения написания кода. В этой статье мы рассмотрим установку и настройку этих инструментов, а также их интеграцию с VS Code.

( читать дальше... )

rtxtxtrx
()

Что такое Flatpak и какие проблемы он решает

 , , , ,

Flatpak - это универсальная система упаковки приложений для Linux, которая стремится решить проблему множества форматов пакетов. Она позволяет разработчикам создавать единый пакет приложения, который может быть установлен на различных дистрибутивах Linux без необходимости перекомпиляции.

( читать дальше... )

rtxtxtrx
()