Ответы пользователя по тегу Linux
  • Как переключить раскладку клавиатуры в консоли?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Ответ написан
    Комментировать
  • Как изменить шрифт терминала в Arch Linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Использую alacritty, но чтобы фонт прописывали в его конфигах, я не видел


    уже не раз говорил про арчвики куда следует заглядывать в первую очередь
    https://wiki.archlinux.org/title/Alacritty#Font

    также у alacritty есть официальный сайт где подробно описывается его конфиг
    https://alacritty.org/config-alacritty.html

    то где лежит конфиг alacritty или куда нужно его положить
    https://wiki.archlinux.org/title/Alacritty#Configu...
    или даже на том же github
    https://github.com/alacritty/alacritty?tab=readme-...
    Ответ написан
    Комментировать
  • Ошибка при попытке запуска Arch в оболочке BSPWM. Как решить?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    почему я с таким мог столкнуться и как исправить?

    тут ничего необычного если проследить цепочку запуска startx

    для начала глянем по нему man (man startx), для удобства это можно сделать даже в браузере так как у арча есть для этого специальный сервис где можно вести поиск по манам для пакетов из официального репозитория
    в данном случае нас интересует https://man.archlinux.org/man/startx.1
    там написано что это простой скрипт для xinit и который призван облегчить его настройку
    также там написано, если кратко, что конфигурационный файл(xinitrc) который считываться при запуске программы первым делом берётся из домашней директории пользователя(~/.xinitrc), а если его там не окажется то из стандартного места в системе(/etc/X11/xinit/xinitrc)
    По видимому своего файла ~/.xinitrc в домашней директории пользователя у вас нету поэтому берётся стандартный конфиг из /etc/X11/xinit/xinitrc (который кстати по сути является баш-скриптом)
    смотрим что он там запускает:
    $ cat -n /etc/X11/xinit/xinitrc 
    ...
        51	twm &
        52	xclock -geometry 50x50-1+1 &
        53	xterm -geometry 80x50+494+51 &
        54	xterm -geometry 80x20+494-0 &
        55	exec xterm -geometry 80x66+0+0 -name login

    twm, xclock и xterm
    как видим это как раз то на что и ругается вывод startx, а именно на отсутствие данных команд - command not found
    установка twm, xclock и xterm

    для начала поймём каким пакетам принадлежат данные команды
    обновим базу по файлам пакетов
    $ sudo pacman -Fy
    ищем
    $ pacman -F twm
    extra/xorg-twm 1.0.12-1
        usr/bin/twm
    
    $pacman -F xclock
    extra/xorg-xclock 1.1.1-1
        usr/bin/xclock
    
    $ pacman -F xterm
    ...
    extra/xterm 392-1
        usr/bin/xterm

    для xterm вывод большой, но нам нужен пакет у которого файл xterm лежит в /usr/bin
    можно даже искать по конкретному файлу
    $ pacman -F /usr/bin/xterm
    usr/bin/xterm принадлежит extra/xterm 392-1


    в общем, нужные нам пакеты будут
    xorg-twm
    xorg-xclock
    xterm

    устанавливаем
    sudo pacman -S xorg-twm xorg-xclock xterm


    но я как-то сомневаюсь что вам нужна эта борода( twm и др.) вместо упомянутого выше bspwm, так что возвращайтесь обратно к xinitrc и настраивайте его должным образом.

    п.с.
    формулировка вопроса
    Ошибка при попытке запуска Arch в оболочке BSPWM

    неверная
    арч не запускается в оболочке bspwm, скорее наоборот, а в данном случае до запуска bspwm дело даже не доходит
    Ответ написан
    1 комментарий
  • Как установить bspwm на Arch'е?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Решил перейти на оконный менеджер bspwm вместо десктопных оболочек.

    похвально конечно, но есть пару минусов у данного выбора:
    первое -- вайланд шагает по планете и выбирать сегодня bspwm который базируется на иксах это малость опрометчиво, да да, я слышу голоса с галёрки, но тем не менее;
    второе -- судя по релизам, у данной программы их не было уже 4 года, а это говорит о многом.
    ну и как следствие падение его популярности

    После установки понял что, по всей видимости, sxhkd итп вместе с bspwm не подтянулись, тк вижу я пустое окно с мышкой и неработающими хоткеями.
    ...
    А все гайды и вики связаны с непосредственной настойкой конфигов, а не самим процессом установки.

    у Арча есть библия и называется она Арчвики, там же по вашему вопросу есть и установки и настройка и многое другое для bspwm
    ну вот для примера смотрим английскую вики по Bspwm#Installation где в первом же предложении черным по белому написано
    Install bspwm for the window manager itself and sxhkd for the X hotkey daemon.

    то есть вместе с bspwm нужно установить и менеджер горячих клавиш sxhkd
    прочитали, сделали:
    sudo pacman -Syu bspwm sxhkd
    где с помощью официального менеджера пакетов обновили систему(-Syu) и установили два нужных нам пакета/программы

    Но я бы на вашем месте, раз уж вы обратили внимание на тайлинги, посмотрел в сторону Sway или Hyprland которые боле менее популярны и основаны на вайланде, ну или если хотите что-то близкое к философии bspwm то глянуть в сторону River, правда он еще молодой и развивается неспешно, но пользоваться им при желании уже можно.
    график до кучи
    Ответ написан
    1 комментарий
  • Почему Kubuntu и другие дистрибутивы называет стоковые папки кириллицей?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если нужно на латинице то выполни в консоли
    LC_ALL=C.UTF-8 xdg-user-dirs-update --force
    детальнее смотри XDG user directories/Creating default directories
    Ответ написан
    Комментировать
  • Как удалить межсетевой экран?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    установился межсетевой экран который показывается с раширением tray и никак не убирается


    вопрос нужно стараться задавать более корректно и желательно без двоякого толкования
    убрать просто иконку с трея или удалить программу это не одно и тоже

    все иконки в трее у популярных графических оболочках убирается довольно легко, вы не озвучили какая DE у вас установлена, но предположим что вы установили такую же как и в официальном установочном образе, где используется KDE, тогда чтобы удалить иконку(applet), достаточно просто щелкнуть ПКМ на панели и выбрать последний пункт(по английски пишется как - Enter edit mode), в этом режиме наводим на системный трей и в появившемся окошке выбираем Configure в результате появиться окно System Tray Settings
    6644f2dced2f2184028868.png
    где уже находим нужный апплет(firewall-applet) и выбираем чтобы он был всегда скрыт

    Другое дело удалить саму программу/пакет
    удалять довольно просто, обычно достаточно будет
    sudo pacman -R ИМЯПАКЕТА
    как в данном случае узнать имя пакета который предоставляет данный апплет ?
    можно просто щелкнуть ПКМ по данному аплету в трее, About - появиться окно с информацией по программе,
    66450746d96f2923791213.jpeg
    где видим имя сайта предоставляющего данную программу, здесь это будет сайт https://firewalld.org
    пойдя в загрузки на сайте можно увидеть имя программы, хоть здесь по названию сайта это и так будет понятно - firewalld
    ну а дальше уже поиском через сайт Арча или консоль найти конкретное имя пакета в базе пакетов Арча, так как редко но имя может всё-же немного отличаться
    вот поиск через оф сайт арча
    https://archlinux.org/packages/?q=firewalld
    как видим найденный пакет так и будет называться firewalld
    идём в арчвики и смотрим, опять же через поиск данного имени, если пакет боле менее популярный то описание того что и как можно делать с программой там найдётся
    https://wiki.archlinux.org/title/Firewalld
    где видно что помимо установки данного пакета
    sudo pacman -S firewalld
    для удаления
    sudo pacman -R firewalld

    для его работы также необходимо запуск службы firewalld.service
    sudo systemctl enable firewalld.service
    sudo systemctl start firewalld.service

    где enable - стартовать сервис при запуске системы, start - стартовать немедленно
    там по ссылкам в вики всё это есть, нужно просто спуститься в кроличью нору
    аналогично когда нужно остановить сервис и убрать из автозагрузки то выполняем:
    sudo systemctl stop firewalld.service
    sudo systemctl disable firewalld.service


    под одним из удалённых ответов вы написали
    если кому-то нужно будет
    sudo -i
    rm /bin/firewall-applet

    данный файл /bin/firewall-applet принадлежит какому-либо установленному пакету, и вы своими действиями можно сказать его повредили что может сказаться при следующем обновлении данного пакета, да и на работу других пакетов/программ которые завязаны на данный пакет это тоже может сказаться, в общем потом будете ловить косяки на ровном месте
    В конкретном случае файл /bin/firewall-applet принадлежит пакету firewalld
    для поиска кому и что принадлежит очень удобно использовать возможности самого пакмана
    обновить подробную базу пакмана
    $ sudo pacman -Fy
    в отличии от стандартного обновления с помощью ключа -S, ключ -F работает с базой которая содержит информацию также и по всем файлам пакетов
    $ pacman -F firewall-applet
    extra/firewalld 2.1.2-2
        usr/bin/firewall-applet

    где видно что данный файл принадлежит пакету firewalld из репозитория extra
    то есть, вы удалили один из файлов принадлежащих пакету firewalld (о котором я и писал в первой части ответа)
    Ответ написан
    3 комментария
  • Что делать если средство разметки дисков показывает разделы неправильно?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    когда задаёте вопросы старайтесь не урезать информацию там где это не нужно. Если бы вы сразу показали картинку полностью то в информации о диске многие бы обратили внимание на запись того что диск динамический, а так мало кто может вспомнить или задаться вопросом, а почему разделы на картинке серо-зелённого цвета. Преобразуйте диск в базовый, а после уже устанавливайте туда linux.
    Ответ написан
    Комментировать
  • Как создать свой образ Arch Linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    смотри статью на арчвики - Archiso, там всё подробно расписано, по нему также и официальный образ создаётся.
    Ответ написан
    Комментировать
  • Какую информацию могут собирать программы\приложения в linux системе?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    любой код(программа) может собирать ту или иную информацию независимо от ОС, но я так понимаю вы имеете в виду чувствительно-важную информацию без согласия на то, то есть скрытно. Если рассматривать использования программ с закрытым и открытым исходным кодом, то второе будет иметь явное преимущество в плане доверия и некоторых гарантий безопасности.
    С закрытым кодом всё просто - вы либо верите что в черном ящике под названием программа нету закладок либо не верите, некоторой гарантией конечно может выступать известный бренд либо лицо которое эту программу производит, и если у вас закрались подозрения то вам нужно либо смириться либо искать альтернативу, другого варианта нету.
    С открытым кодом интереснее - понятное дело что даже если код открыт, то при достаточно большом его объёме трудно найти лазейку, но аудит кода всё же возможен хоть и трудозатратен и не гарантирует 100% чистоты, но ведь постепенно развиваются и автоматизированные средства проверки кода что при первом варианте в принципе невозможно. Далее, сейчас для открытого кода популярно также держать и доступный git репозиторий что позволяет отслеживать историю изменений, то есть при желании можно получить информацию о том кто и когда внёс изменения, что также мотивирует разработчиков не косячить.

    В общем, если брать боле менее популярные программные продукты то у закрытого кода есть тока один сдерживающий фактор - репутация, пошатнуть которую к сожалению довольно сложно без прямых доказательств, а для косвенных нужно приложить довольно много времени и сил что по времени порой становится просто неактуально. У открытого кода в противовесе также идёт репутация, но потерять её довольно легко при открытом коде и истории изменений, поэтому отбор добропорядочных здесь идёт намного жестче.
    Ответ написан
    Комментировать
  • Как увидеть список и типы разделов на вставленной, но неподмонтированной флешке?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    как пример можете взять вывод утилиты lsblk за основу
    $ lsblk -o NAME,RM,TRAN,SIZE,TYPE,PTTYPE,FSTYPE,PARTTYPENAME,MOUNTPOINTS,MODEL | awk 'NR==1 || $2 == 1'
    NAME        RM TRAN     SIZE TYPE PTTYPE FSTYPE  PARTTYPENAME       MOUNTPOINTS                  MODEL
    sda          1 usb     14,7G disk dos    iso9660                                                 Transcend 16GB
    ├─sda1       1          789M part dos    iso9660 Empty              /run/media/admin/ARCH_202309 
    └─sda2       1           15M part dos    vfat    EFI (FAT-12/16/32)

    где RM это флаг съёмного устройства, 1 съёмное а 0 не съёмное, TRAN device transport type в общем тип устройства usb, ssd, nvme ..., с остальными параметрами думаю боле-мене ясно, их можно убавить по желанию.
    С помощью `awk` мы отфильтруем(`$2 == 1`) тока съёмные устройства, ну и заодно оставим шапку(`NR==1`) для информативности.
    При желании это можно вывести более кратко
    $ lsblk -o NAME,RM,FSTYPE,MOUNTPOINTS | awk '$2==1{$2="";print}'
    sda  iso9660
    ├─sda1  iso9660 /run/media/admin/ARCH_202312
    └─sda2  vfat

    где наличие третьего столбца у раздела говорит о его смонтированности

    п.с.
    тег CentOS тут думаю лишний, такая информация получается с помощью стандартных линукс утилит

    п.с.2
    может быть такая ситуация когда файловая система записана напрямую на весь диск без таблицы разделов, тогда вывод будет выглядеть примерно так:
    $ lsblk -o NAME,RM,TRAN,SIZE,TYPE,PTTYPE,FSTYPE,PARTTYPENAME,MOUNTPOINTS,MODEL | awk 'NR==1 || $2 == 1'
    NAME        RM TRAN     SIZE TYPE PTTYPE FSTYPE PARTTYPENAME     MOUNTPOINTS MODEL
    sda          1 usb     14,7G disk        ext4                                Transcend 16GB

    значение в PTTYPE будет отсутствовать

    п.с.3

    можно даже так с отфильтрованным и отформатированным выводом через json
    $ lsblk -Jpo PKNAME,NAME,RM,FSTYPE,MOUNTPOINTS | jq -r '.blockdevices[] | select(.rm == true) | .children[] |select(.mountpoints[] == null) | "Съёмное устройство \(.pkname) имеет не смонтированный раздел \(.name) с файловой системой \(.fstype)"'
    Съёмное устройство /dev/sda имеет не смонтированный раздел /dev/sda2 с файловой системой vfat

    для учета файловой системы которая записана на весь диск без таблицы разделов необходимо в команду выше добавить некоторые условия, но это уже будет вашей разминкой.
    Ответ написан
    4 комментария
  • Как вывести общий объем свободного и занятого дискового пространства?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    есть замечательная утилита lsblk
    например, вывести информацию по всем смонтированным FS(файловым системам) в виде - имя, доступный размер, используемый размер и процент от использования
    $ lsblk -lo NAME,FSAVAIL,FSUSED,FSUSE\% | awk 'NF>1'
    NAME      FSAVAIL FSUSED FSUSE%
    nvme1n1p1    423M    88M    17%
    nvme1n1p2  423,2G    29G     6%
    nvme0n1p2  360,2G  73,3G    16%

    awk здесь используется для отсечения не смонтированных ФС и самих дисков у которых естественно будет отсутствовать доступный размер.
    Если нужен общий размер файловой системы то добавьте параметр FSSIZE

    если нужно без шапки то используй ключ -n
    $ lsblk -nlo NAME,FSAVAIL,FSUSED,FSUSE\% | awk 'NF>1'
    nvme1n1p1    423M    88M    17%
    nvme1n1p2  423,2G    29G     6%
    nvme0n1p2  360,2G  73,3G    16%

    если нужно по конкретной ФС то просто указываем её
    $ lsblk -nlo NAME,FSAVAIL,FSUSED,FSUSE\% /dev/nvme1n1p2
    nvme1n1p2  423,2G    29G     6%

    если нужна конкретная цифра то оставляем тока нужный параметр
    $ lsblk -no FSUSED /dev/nvme1n1p2
       29G

    при желании можно получить данные через json и после нужным образом обработать, например:
    $ lsblk -Jo FSUSED /dev/nvme1n1p2 | jq -r '.blockdevices[].fsused'
    29G

    если нужно в байтах, то используйте ключ -b
    $ lsblk -Jbo FSUSED /dev/nvme1n1p2 | jq -r '.blockdevices[].fsused'
    31178240000


    еще как пример, для файловой системы nvme1n1p2 отобразим в форматированном виде информацию по свободному и занятому пространству:
    $ lsblk -Jo FSAVAIL,FSUSED /dev/nvme1n1p2 | jq -r '.blockdevices[] | "Всего занято:\t\(.fsused)\nВсего свободно
    :\t\(.fsavail)"'
    Всего занято:	29G
    Всего свободно:	423,2G


    п.с.
    если нужна обобщённая информация сразу по всему диску то наверное проще будет использовать smartctl
    sudo smartctl -ja /dev/nvme0n1 | jq -r '.nvme_namespaces[] | "Всего занято:\t\(.utilization.bytes)\nВсего свободно:\t\(.capacity.bytes - .utilization.bytes)"'
    Всего занято:	88322768896
    Всего свободно:	411785093120

    правда это скорее всего будет с учетом размера метаданных самих файловых систем расположенных на диске, что будет не так интересно, хотя для быстрой оценки диска сойдёт.
    (здесь вывод json под nvme, для других видов дисков скорее всего нужно будет подправить)

    и да, для преобразования размеров довольно удобно использовать утилиту numfmt
    $ sudo smartctl -ja /dev/nvme0n1 | jq -r '.nvme_namespaces[] | "Всего занято: \(.utilization.bytes)\nВсего свободно: \(.capacity.bytes - .utilization.bytes)"' | numfmt --to=iec --field 3 --padding=1 --format %.1f
    Всего занято: 82,3G
    Всего свободно: 383,6G
    Ответ написан
    1 комментарий
  • Скрипт который прерывается если в директории есть 2 файла с похожим названием?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Пример, в /home/user лежат файлы test14 test12 test123 test1234. Необходимо чтобы скрипт проверил директорию, и в случае если в ней лежит только один файл test14 завершился успешно, а если в ней находятся файлы указанные выше, то прерывался.


    случайный набор цифр после слова test


    скрипт, строчка, вставить
    (( $(ls /home/user |grep -c ^test) > 1 )) && exit
    Ответ написан
    Комментировать
  • Зеркала Arch linux почему то всегда выдают 404 что делать?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    перед установкой чего либо всегда желательно обновить систему(-Syu) чтобы не встречать подобных казусов о чем в принципе и написал выше в комментариях к вопросу Василий Дёмин .
    В локальной базе версия пакета, судя по выхлопу, у вас edk2-ovmf-202308-2 (модификация 2), которую pacman и пытается запросить у внешнего сервера, НО на серверах она уже другая edk2-ovmf-202308-3 (модификация 3) что можно видеть если запросить информацию с сервера по данному пакету
    pacman -Si edk2-ovmf
    или даже посмотреть на оффсайте арча edk2-ovmf

    чтобы pacman увидел новую версию нужно синхронизировать локальный репозиторий с удалённым, для этого служит команда
    pacman -Sy
    информацию по ключу можно глянуть в хелпе(-h, --help)
    pacman -Sh
    ...
      -y, --refresh        загрузить обновленные базы данных с серверов
                           (-yy принудительно обновить даже если обновленные)


    после чего pacman уже сможет скачать и установить нужный пакет с сервера, но если система давно не обновлялась то такая установка будет считаться как частичное обновление системы что для дистрибутивов с ролинг-релизом настоятельно рекомендуется этого не делать, поэтому перед установкой необходимо обновить все пакеты в системе добавив ключ -u, --sysupgrade
    в целом команда будет выглядеть так:
    pacman -Syu edk2-ovmf
    Ответ написан
    Комментировать
  • Есть ли необходимость или очевидные плюсы перехода на linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    наткнулся на повторяющиеся заметки о том, что "тру кодеру" необходимо работать в линуксе.

    думаю тут многое зависит от того что вкладывать в понятие "тру кодер"
    у одних это просто кодить от звонка до звонка за хорошие деньги.
    у других это интерес или даже зуд постоянно разбираться(учится) в чем-то и/или разрабатывать что-то новое.

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

    много ли людей которые хорошо знают linux хотят перейти на windows ??
    много ли людей которые хорошо знают windows хотят перейти на linux ??

    если допустить то что обе платформы покрывают основные базово-программные потребности обычного пользователя то ответ будет очевиден, большинство останется на том к чему привыкли и тока внешние обстоятельства могут побудить к миграции.
    Что касается "тру кодеров" то тут будет немного другая история, если брать двухполюсную модель выше, то у одних как и у обычных пользователей мотивация будет внешней, а ось для них это тока инструмент/станок для решения внешних задач, подобно секретарше использующей компьютер для печати документов.
    Для других же ОСь это по сути программа как и все остальные которые он использует, гибкость которой измеряется лишь уровнем овладения ею, а так как кроличья нора у линукс на порядки глубже чем у винды то выбор становится очевидным.
    Кстати по поводу перехода программистов на Linux в прошлом году вышла статья в основу которой легли данные Stack Overflow полученные путём опроса среди программистов.
    Ответ написан
    Комментировать
  • Как передать опции fdisk?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    fdisk(диалоговый) is a dialog-driven program for creation and manipulation of partition tables.(man)
    cfdisk(псевдографический) is a curses-based program for partitioning any block device.(man)
    sfdisk(скрипто-ориентированный) is a script-oriented tool for partitioning any block device.(man)

    fdisk, cfdisk и sfdisk это связные утилиты входящие в util-linux
    с вашей задачей легко справится sfdisk который хорошо подходит для указания не интерактивных команд работы с разделами:
    echo -e "label:gpt\nstart=1M" | sudo sfdisk /dev/sdb

    создаст таблицу разделов gpt на диске /dev/sdb с одним разделом на весь диск у которого начальное смещение составляет 1M
    Ответ написан
    Комментировать
  • Как в линуксе сравнить два дерева директорий, но без проверки содержимого файлов, только проверить совпадение размеров и дат?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    diff <(tree -sixfD --noreport Dir1) <(tree -sixfD --noreport Dir2)
    Ответ написан
    Комментировать
  • Как при помощи awk или sed вытащить первую и последнюю строку вывода?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    первая и последняя строка с помощью awk
    ... |awk 'NR==1;END{print}'

    а чтобы два раза не вставать то можно сразу с нужными столбцами:
    awk '{x=$2" "$3" "$6" "$7" "$11}NR==1{print x}END{print x}' FILE
    Ответ написан
    Комментировать
  • Как добавить параметр OK/NOTOK в конце вывода?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Есть команда показывающая кол-во подключенных ЮСБ к серверу и их наименование

    у вас лишь немного модифицированная команда lsusb, а она выводит
    lsusb is a utility for displaying information about USB buses in the system and the devices connected to them.

    то есть помимо самих подключенных usb-устройств выводит и шины на которых они висят.
    Не знаю по какому принципу вы будете определять где ставить OK а где NO в выводе lsusb, но если вам нужно в цвете плюс вставить внешний параметр в awk то будет выглядеть примерно так:
    RED='\033[0;31m'
    GREEN='\033[0;32m'
    NORMAL='\033[0m'
    
    OK="${GREEN}OK${NORMAL}"
    NO="${RED}NO${NORMAL}"
    
    lsusb |awk -v ok="$OK" -v no="$NO" '{print $3" "$4" - "$7" "$8" "$9" "no}'
    Ответ написан
    Комментировать
  • Как сгруппировать каталоги и подсчитать их размер?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    примерно так
    $ du -sb * |awk '{cmd="stat -c %z "$2" |cut -d\" \" -f1";cmd |getline z;close(cmd);print z" "$1}' |awk '{sum[$1]+=$2}END{for(i in sum)print i,sum[i]}' |sort |numfmt --to=iec --field 2 --padding=10
    2022-01-21        13M
    2022-11-02        17G
    2022-12-13       4,7G
    2023-01-15       388M
    2023-03-06       1,6G
    2023-04-01       1,6G
    2023-04-03       2,2G
    2023-04-04        13G
    2023-04-11       7,6G
    Ответ написан
    1 комментарий
  • Как увеличить место под раздел linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если кратко то в вашем случае будет примерно так:
    lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/sda
    echo ", +" | sudo sfdisk --no-reread -N 4 /dev/sda
    echo ", +" | sudo sfdisk --no-reread -N 5 /dev/sda
    sudo partx --update /dev/sda
    lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/sda
    sudo resize2fs -f /dev/sda5
    lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/sda

    с помощью lsblk контролируем состояния
    первый sfdisk максимально раздвигает расширенный раздел, а второй sfdisk раздвигает уже сам раздел /dev/sda5
    sfdisk работает тока с таблицей разделов
    partx обновляет для ядра информацию по разделам на указанном диске
    ну и под конец с помощью resize2fs расширяем файловую систему до значений в таблице разделов.

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

    $ truncate -s 1G test.img
    $ echo -e "label:dos\nsize=100M,bootable,type=L\nsize=200M,type=L\nsize=300M,type=L\ntype=Ex\nsize=+" | sfdisk test.img
    Проверяется, чтобы сейчас никто не использовал этот диск... ОК
    Диск test.img: 1 GiB, 1073741824 байт, 2097152 секторов
    Единицы: секторов по 1 * 512 = 512 байт
    Размер сектора (логический/физический): 512 байт / 512 байт
    Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
    
    >>> Заголовок скрипта принят.
    >>> Создана новая метка DOS с идентификатором 0xa605c035.
    test.img1: Создан новый раздел 1 с типом 'Linux' и размером 100 MiB.
    test.img2: Создан новый раздел 2 с типом 'Linux' и размером 200 MiB.
    test.img3: Создан новый раздел 3 с типом 'Linux' и размером 300 MiB.
    test.img4: Создан новый раздел 4 с типом 'Extended' и размером 423 MiB.
    test.img5: Создан новый раздел 5 с типом 'Linux' и размером 422 MiB.
    test.img6: Done.
    
    Новая ситуация:
    Тип метки диска: dos
    Идентификатор диска: 0xa605c035
    
    Устр-во    Загрузочный  начало   Конец Секторы Размер Идентификатор Тип
    test.img1  *              2048  206847  204800   100M            83 Linux
    test.img2               206848  616447  409600   200M            83 Linux
    test.img3               616448 1230847  614400   300M            83 Linux
    test.img4              1230848 2097151  866304   423M             5 Расширенный
    test.img5              1232896 2097151  864256   422M            83 Linux
    
    Таблица разделов была изменена
    Синхронизируются диски.
    
    $ losetup --partscan --show --find test.img
    /dev/loop0
    
    $ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
    NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
    /dev/loop0     loop           1G
    ├─/dev/loop0p1 part         100M
    ├─/dev/loop0p2 part         200M
    ├─/dev/loop0p3 part         300M
    ├─/dev/loop0p4 part           1K
    └─/dev/loop0p5 part         422M
    
    $ mkfs.ext4 /dev/loop0p5
    $ mkdir /tmp/mnt
    $ sudo mount /dev/loop0p5 /tmp/mnt
    
    $ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
    NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
    /dev/loop0     loop           1G
    ├─/dev/loop0p1 part         100M
    ├─/dev/loop0p2 part         200M
    ├─/dev/loop0p3 part         300M
    ├─/dev/loop0p4 part           1K
    └─/dev/loop0p5 part ext4    422M 385,2M /tmp/mnt
    
    
    $ truncate -s +1G test.img
    $ sudo losetup --verbose --set-capacity /dev/loop0
    
    $ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
    NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
    /dev/loop0     loop           2G
    ├─/dev/loop0p1 part         100M
    ├─/dev/loop0p2 part         200M
    ├─/dev/loop0p3 part         300M
    ├─/dev/loop0p4 part           1K
    └─/dev/loop0p5 part ext4    422M 385,2M /tmp/mnt
    
    
    $ echo ", +" | sudo sfdisk --no-reread -N 4 /dev/loop0
    $ sfdisk --dump /tmp/test.img
    label: dos
    label-id: 0xa605c035
    device: /tmp/test.img
    unit: sectors
    sector-size: 512
    
    /tmp/test.img1 : start=        2048, size=      204800, type=83, bootable
    /tmp/test.img2 : start=      206848, size=      409600, type=83
    /tmp/test.img3 : start=      616448, size=      614400, type=83
    /tmp/test.img4 : start=     1230848, size=     2963456, type=5
    /tmp/test.img5 : start=     1232896, size=      864256, type=83
    
    $ echo ", +" | sudo sfdisk --no-reread -N 5 /dev/loop0
    $ sfdisk --dump /tmp/test.img
    label: dos
    label-id: 0xa605c035
    device: /tmp/test.img
    unit: sectors
    sector-size: 512
    
    /tmp/test.img1 : start=        2048, size=      204800, type=83, bootable
    /tmp/test.img2 : start=      206848, size=      409600, type=83
    /tmp/test.img3 : start=      616448, size=      614400, type=83
    /tmp/test.img4 : start=     1230848, size=     2963456, type=5
    /tmp/test.img5 : start=     1232896, size=     2961408, type=83
    
    $ sudo partx --update /dev/loop0
    $ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
    NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
    /dev/loop0     loop           2G
    ├─/dev/loop0p1 part         100M
    ├─/dev/loop0p2 part         200M
    ├─/dev/loop0p3 part         300M
    ├─/dev/loop0p4 part           1K
    └─/dev/loop0p5 part ext4    1,4G 385,2M /tmp/mnt
    
    $ sudo resize2fs /dev/loop0p5
    $ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
    NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
    /dev/loop0     loop           2G
    ├─/dev/loop0p1 part         100M
    ├─/dev/loop0p2 part         200M
    ├─/dev/loop0p3 part         300M
    ├─/dev/loop0p4 part           1K
    └─/dev/loop0p5 part ext4    1,4G   1,3G /tmp/mnt
    
    $ sudo umount /tmp/mnt
    $ losetup -d /dev/loop0
    Ответ написан
    5 комментариев