Ответы пользователя по тегу Linux
  • Как настроить визуализацию процессов в linux под sway с помощью pscircle?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    установите из аура pscircle (кстати, у разрабов почему то указанно pscircle-git которого нету в аур)
    yay -S pscircle
    вместо yay можно использовать любой другой аурхелпер
    также установите из офреп пакет swaybg если еще не установлен.

    Далее создадим скрипт с именем background и положим его например здесь $HOME/.local/bin/background

    (вариант 1)
    #!/usr/bin/env bash
    
    PICTURE_PATH=/tmp/pscircle.png
    TIME_UPDATE=5 # ставить >= 2
    
    # борьба с дублями программы
    PID_PATH=/tmp/background.pid
    [[ -e $PID_PATH ]] && kill $(cat $PID_PATH)
    echo $$ > $PID_PATH
    
    [[ -n "$(pgrep swaybg)" ]] && pkill swaybg
    
    while :; do
    	pscircle 	--output=$PICTURE_PATH \
    				--max-children=50 \
    				--output-width=1920 \
    				--output-height=1080 \
    				--tree-radius-increment=150 \
    				--dot-radius=3 \
    				--link-width=1.3 \
    				--tree-font-size=13 \
    				--toplists-font-size=20 \
    				--tree-center=-300:0 \
    				--cpulist-center=600.0:-120.0 \
    				--memlist-center=600.0:120.0
    
    	swaybg 	--image $PICTURE_PATH \
    			--mode center \
    			--color "#000000" \
    			--output "*" &
    
    	# время на установку нового изображения перед тем как убрать старое
    	# убирает мерцание при смене обоев
    	sleep 1
    
    	[[ -n $pid ]] && kill $pid
    	pid=$(pgrep swaybg)
    
    	sleep $[TIME_UPDATE-1]
    done


    скрипт (вариант 2)
    #!/usr/bin/env bash
    
    PICTURE_PATH=/tmp/pscircle.png
    TIME_UPDATE=5
    
    # борьба с дублями программы
    PID_PATH=/tmp/background.pid
    [[ -e $PID_PATH ]] && kill $(cat $PID_PATH)
    echo $$ > $PID_PATH
    
    [[ -n "$(pgrep swaybg)" ]] && pkill swaybg
    
    while :; do
     	pscircle --output=$PICTURE_PATH
     	swaymsg "output * background $PICTURE_PATH fill #000000"
     	sleep $TIME_UPDATE
    done


    второй вариант проще, но у меня почему то вызывает мерцание при смени картинки.
    Правим параметры под себя и сделаем скрипт исполняемым:
    chmod +x $HOME/.local/bin/background

    затем уже в самом конфиге sway $HOME/.config/sway/config добавляем строчку
    exec_always $HOME/.local/bin/background
    где exec_always позволит перезагружать наш конфиг через перезагрузку файла конфигурации sway, по умолчанию установлена комбинация
    bindsym $mod+Shift+c reload
    то есть, при подборе параметров для pscircle в нашем скрипте достаточно будет нажать вышеуказанную комбинацию клавиш чтобы изменения вступили в силу.
    ps.
    Также не забудьте в конфиге sway закомментировать строку где указанно старое использование обоев рабочего стола.
    Ответ написан
    1 комментарий
  • Програма для синхронизации ГуглДрайв (Линукс), есть такое?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Ответ написан
    Комментировать
  • Как изменить вывод баш скирпта?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если у вас там команды с многострочным выводом, по типу файлов, то для того чтобы это вывести обычно нужно пройти два этапа:
    первый, это построчное объединение файлов/переменных с нужным разделителем
    второе, это уже непосредственный отформатированный вывод по указанному выше разделителю.
    рассмотрим ваш пример с командой hostnamectl
    для построчного объединения можно использовать стандартную утилиту paste
    paste file1 file2
    где вместо файлов подставим вывод наших команд
    paste <(hostnamectl) <(hostnamectl)
    но в таком виде оно просто сольёт строки, а нам их нужно как-то различать в одной строке, если внутри вывода команд не используется символ ';' то возьмём его в качестве разделителя, то есть нам нужно в конец file1(ну или вывода команды) добавить окончание в виде точки с запятой ';'
    делается это просто с помощью того же awk
    hostnamectl |awk '{print $0";"}'
    в общем виде будет выглядеть так:
    paste <(hostnamectl |awk '{print $0";"}') <(hostnamectl)


    то есть, по сути, мы получили структурированный текстовый формат по типу CSV/TSV с разделителем в виде ';'
    а вывести подобное довольно просто, так как для этого есть много разных консольных утилит, начиная от стандартной линуксовой column
    paste <(hostnamectl |awk '{print $0";"}') <(hostnamectl) | column -t -s';'

    и заканчивая внешней утилитой csview с рамочками и блэкджеком:
    paste <(hostnamectl |awk '{print $0";"}') <(hostnamectl) | csview -H -d';'

    хотя в последнем варианте можно сократить до
    paste <(hostnamectl) <(hostnamectl) | csview -H --tsv

    так как paste добавляет еще табуляцию как разделитель
    Ответ написан
    1 комментарий
  • Как в через терминал linux найти файлы с одним расширением и только в папках которые заканчиваются на строку?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    найти нужные файлы и заменить в них подстроку
    sed -i "s/stroka1/stroka2/g" $(find -type f -iname "*.html" | grep \\-blr\/ )
    Ответ написан
    Комментировать
  • На какой диск лучше ставить вторую oc?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    любую ОС всегда лучше ставить на ssd, но у вас их тут две и какая будет в приоритете вы не упоминаете.
    Вариант двух ОС на ssd где предполагается поделить его на две части примерно по 60 гиг, так себе затея, и дело тут не в том что две системы на одном диске плохо, нет, дело в том что 60 гиг я бы сказал это в притык, и то всё равно придется постоянно следить чтобы место вдруг не закончилось, то есть, постоянно следить и чистить от лишнего. Но и это даже не всё, так как свободного места предполагается быть мало это само собой скажется на довольно быстром исчерпании физического ресурса ssd которому придется чаще перезаписывать ячейки свободной памяти у которых ротация будет довольно слабая.
    Если это стационарник и есть возможность докупить диск то проще всего взять еще один ssd на 120+ гиг под одну систему, если же это ноут то прикупить ssd на 250+ гиг и поделить уже его между системами.
    Если покупка в данный момент невозможна и нужен именно натив то уже в крайнем случае можно установить linux на hdd, но учтите если ставите систему на hdd то всегда ставьте раздел с системой в начале диска, так как известно что скорость чтения у hdd падает почти в два раза от начала к концу диска.
    Ответ написан
    8 комментариев
  • Как отличить внутренние команды от внешних в Astra Linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $ type --help
    ~
    -t  output a single word which is one of `alias', `keyword',
      `function', `builtin', `file' or `', if NAME is an alias,
      shell reserved word, shell function, shell builtin, disk file,
      or not found, respectively
    ~


    $ type -t cp dir bg dmesg
    file
    file
    builtin
    file

    из вывода видно что cp, dir и dmesg это внешние(file) команды, а bg это внутренняя(builtin) или точнее встроенная команда.
    Ответ написан
    Комментировать
  • Как записывать в файл до тех пор пока есть место в нем?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Он как видно на 100049 байт.

    Мне нужно записывать в него строки ew=`cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 76` до тех пор пока он не заполнится полностью.

    то есть, у нас есть символы от A-Z a-z 0-9 каждый из которых занимает 1 байт
    нужно записывать строки с 76 символами + 1 символ перевода строки
    по итогу получим

    100049/77 = 1299 полных строк и немного хвоста
    размер хвоста
    100049-1299*77 = 26 символов

    если всё это перевести в bash-код то получим следующее
    #!/usr/bin/env bash
    
    #вводные
    FILE=file.txt
    S=100049 # общий размер в байтах
    s=76   # максимальное количество однобайтовых символов на строку
    
    N=$[S/(s+1)]
    n=$[S-N*(s+1)]
    
    echo "Cтрок + хвост = $N + $n"
    
    rm -rf $FILE
    for (( i = 0; i < $N; i++ )); do
    	cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c $s >> $FILE
    	echo >> $FILE
    done
    cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c $n >> $FILE
    
    echo "Файл записан"
    echo "Размер файла $FILE = $(stat -c %s $FILE) байт"

    по итогу получим файл с необходимым объёмом данных
    Ответ написан
    Комментировать
  • Как узнать на каком жестком диске стоит Линукс?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    информацию можно посмотреть через lsblk где вывод дополнить VENDOR и MODEL для лучшей идентификации нужного диска
    lsblk -po "NAME,SIZE,TYPE,TRAN,MOUNTPOINTS,VENDOR,MODEL"

    смотрим имя раздела где в MOUNTPOINTS примонтирован корень(/) системы, а зная раздел можно увидеть и диск которому он принадлежит

    имя раздела(в /dev/...) куда примонтирован корень системы можно еще посмотреть командой
    findmnt -o SOURCE -n /
    Ответ написан
    Комментировать
  • Как удалить все строки до n через sed?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    awk "NR>3" FILE
    вывести строки что больше 3

    awk -i inplace "NR>3" FILE
    где -i inplace перезаписывает файл, то есть по итогу в файле останутся строки начиная с четвертой

    N=3
    awk -i inplace "NR>$N"

    то же что и предыдущее, но с указанием номера строки через внешнюю переменную
    Ответ написан
    Комментировать
  • Почему не работает node js в manjaro после перезапуска терминала?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    для фиксации нужно делать через default, это подробно показанно в nvm --help в примерах.

    в данном случае нужно сделать так
    nvm alias default 14.22.1

    п.с.
    Установил nvm таким способом ...

    с огнём играете )) не нужно использовать древние инструкции при работе с Арчем, а то может быть чревато. В большинстве случаев достаточно того что написанно в арчвики и/или в прикреплённых комментах к данному пакету в АУР, здесь это nvm#comment-764001, да и при установке данного пакета также выводилась информация что нужно сделать


    paru -S nvm
    ...
    You need to source nvm before you can use it. Do one of the following
    or similar depending on your shell (and then restart your shell):

    echo 'source /usr/share/nvm/init-nvm.sh' >> ~/.bashrc
    echo 'source /usr/share/nvm/init-nvm.sh' >> ~/.zshrc

    You can now install node.js versions (e.g. nvm install 10) and
    activate them (e.g. nvm use 10).

    init-nvm.sh is a convenience script which does the following:

    [ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.nvm"
    source /usr/share/nvm/nvm.sh
    source /usr/share/nvm/bash_completion
    source /usr/share/nvm/install-nvm-exec

    You may wish to customize and put these lines directly in your
    .bashrc (or similar) if, for example, you would like an NVM_DIR
    other than ~/.nvm or you don't want bash completion.
    Ответ написан
    1 комментарий
  • Какой дистрибутив Arch Linux выбрать?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Какой дистрибутив Arch Linux выбрать?
    Я нашёл вот этот сайт...

    если подходить к вопросу основательно то лучше искать информацию у первоисточников
    например, те же дистрибутивы основанные на Archlinux можно посмотреть на офсайте Арча
    https://wiki.archlinux.org/title/Arch-based_distri...
    там их порядка 30 которые боле менее активны и для каждого из них даны ссылки на офстраницу, изучив информацию с которых можно понять с какой целью был создан тот или иной дистрибутив.

    вопросов 2:
    1. Смогу ли я изменить внешний вид под macOS где всё сверху, анимашки красивые и прочее
    2. Какая основная разницы между всеми этими дистрибутивами?


    сам Arch это конструктор, в том же основном гайде по инсталяции Installation guide после установки у вас будет только рабочая голая консоль, а далее уже поверх всего этого вы при желании накатываете WM или DE, ну и под конец запиливаете это всё под себя добавляя нужный функционал и рюшечки.
    Дистрибутивы на основе Арча это по большей части просто собранный за вас конструктор со своим стилем и направлением, например тот же BlackArch это своеобразный аналог всем известной Kali
    Ответ написан
    1 комментарий
  • Как обновить Gnome?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    судя по этой ссылке где показан текущий статус основного пакета gnome-shell входящего в метапакет gnome , на сегодня имеем такую ситуацию:
    stable1:42.5-1
    testing1:43.1-1
    unstable1:43.1-1

    то есть, есть несколько вариантов, это либо просто подождать какое-то время пока обновление не докатится до stable или же самому переключится на ветку testing или unstable

    чтобы переключится на ветку testing выполните:
    sudo pacman-mirrors --api --set-branch testing
    sudo pacman-mirrors --fasttrack 5 && sudo pacman -Syyu

    подробнее про смену веток смотри Switching_Branches
    Ответ написан
    1 комментарий
  • Как заменить нижнее подчеркивание на пробел в имени файла?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    find . -type f -name '*_*' -exec sh -c 'x="{}";mv "$x" "${x//_/ }"' \;
    Ответ написан
    Комментировать
  • Как создать новый раздел на весь диск?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    echo -e "label:mbr\nstart=1M" | sfdisk /dev/sdb
    создаст таблицу разделов mbr на диске /dev/sdb с одним разделом на весь диск у которого начальное смещение составляет 1M

    другой пример
    echo -e "label:gpt\nsize=100M\nsize=+" | sfdisk /dev/sdb

    здесь мы создаём таблицу разделов gpt и два раздела, один на 100M а второй на всё оставшееся место.

    если нужно ресайзить уже готовые разделы то глянь здесь где всё доходчиво написанно
    но а вообще смотри ман
    и кстати у sfdisk, fdisk и cfdisk общая поддержка создания сценария что иногда бывает довольно удобно, смотри (s)fdisk scripts

    п.с.
    sfdisk довольно недооценённая утилита в которую если вникнуть позволяет творить чудеса

    Диск должен быть разбит на 4 раздела. 3 я создаю из дампа sfdisk. Нужно создать еще один. Последний. На все оставшееся место.

    всё очень просто:
    echo -e "size=+" | sfdisk -N 4 /dev/sdb

    вот небольшой пример
    $ truncate -s 1G disk.img
    $ echo -e "label:mbr\nsize=100M\nsize=200M\nsize=300M" | sfdisk disk.img
    $ sfdisk --dump disk.img
    label: dos
    label-id: 0x58b01c8a
    device: disk.img
    unit: sectors
    sector-size: 512
    
    disk.img1 : start=        2048, size=      204800, type=83
    disk.img2 : start=      206848, size=      409600, type=83
    disk.img3 : start=      616448, size=      614400, type=83
    
    $ echo -e "size=+" | sfdisk -N 4 disk.img
    $ sfdisk --dump disk.img
    label: dos
    label-id: 0x58b01c8a
    device: disk.img
    unit: sectors
    sector-size: 512
    
    disk.img1 : start=        2048, size=      204800, type=83
    disk.img2 : start=      206848, size=      409600, type=83
    disk.img3 : start=      616448, size=      614400, type=83
    disk.img4 : start=     1230848, size=      866304, type=83
    Ответ написан
    3 комментария
  • Имею базу в формате txt размером 2gb, как отсортировать по количеству символов на строку?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    как-то так
    awk "{print length,\$0}" FILE_IN |sort -n |cut -d ' ' -f 2- > FILE_OUT

    {1} | {2} | {3}
    {1} -- добавляем количество символов в начало каждой строки (формируем первый столбец)
    {2} -- сортируем строки по первому столбцу
    {3} -- удаляем первый столбец
    Ответ написан
    2 комментария
  • Как определить, что текущая директория относится к примонтированному usb?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    немного магии:
    lsblk -dno TRAN /dev/$(lsblk -no PKNAME $(findmnt --df -no SOURCE --target $PWD))

    выведет устройство на котором расположенна текущая директория, как то usb, nvme, ssd ...
    Ответ написан
    1 комментарий
  • Как отобразить JSON с кириллицей в bash?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    это escape-последовательность, а точнее символы юникода в шестнадцатеричном формате
    $ echo -e "\u0421\u0430\u043c\u0430\u0440\u0430"
    Самара
    Ответ написан
    1 комментарий
  • Как сейчас можно установить Windows/Linux на MacOS c чипом M1?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    https://asahilinux.org/

    Также Линус упомянул, что использовал для формирования релиза ноутбук Apple на базе архитектуры ARM64 (Apple Silicon) с Linux-окружением на базе дистрибутива Asahi Linux.

    Релиз ядра Linux 5.19
    Ответ написан
    Комментировать
  • Где найти полное руководство пользователя по Линуксу?

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