• Из-за чего youtube-dl ограничивает скорость скачивание?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    youtube-dl не ограничивает скачивание её ограничивает сам ютуб, часто помогает перезапуск скачки, возможно даже что это тот самый throttling.
    да и сам youtube-dl давно не обновлялся, попробуйте его форк yt-dlp возможно с ним будет нормально.
    Ответ написан
    1 комментарий
  • Почему Linux Manjaro не видит UUID раздела?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    lsblk -o +UUID
    ну или только uuid по выбранному разделу:
    lsblk -no UUID /dev/nvme0n1p1
    Ответ написан
    Комментировать
  • Как правильно составить небольшой bash скрипт по созданию пользователей?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    такое ощущение что условие неполное, поэтому немного усложню, а при желании вы легко можете упростить скрипт до нужного результата
    Предположим что нужно создать N пользователей(от 1 до N) и задать пароль к ним и всё это с соответствующей числовой приставкой . То есть, написать скрипт который на вход получает базовое имя и пароль, а также количество пользователей которых нужно создать.
    допустим имя скрипта будет luser.sh
    #!/usr/bin/env bash
    
    USER=$1 # базовая часть имени пользователя
    PASS=$2 # базовая часть пароля
    N=$3    # количество пользователей
    for (( i = 1; i <= $N; i++ )); do
    	useradd "${USER}_$i" && $(echo "${USER}_$i:${PASS}_$i" |chpasswd)
    	echo "User ${USER}_$i added!"
    done

    пример работы скрипта:
    $ sudo ./luser.sh user pass 3
    User user_1 added!
    User user_2 added!
    User user_3 added!

    проверим что пользователи с основанием в имени user действительно создались:
    $ grep -e "^user" /etc/passwd
    user_1:x:1314:1314::/home/user_1:/bin/bash
    user_2:x:1315:1315::/home/user_2:/bin/bash
    user_3:x:1316:1316::/home/user_3:/bin/bash
    Ответ написан
    Комментировать
  • Как слайсить массив на баше?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    for ((i=0;i<${#array[@]};i=i+6));do echo ${array[@]:i:6};done
    Ответ написан
    Комментировать
  • Как локализовать скрипт на BASH?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    sk ( skim )
    get_lang=$(grep -rh папка/где/искать -e '^language=' | awk -F'=' '{print $2}' | sk)
    Ответ написан
    Комментировать
  • Оконный менеджер i3 не слушает изменения в конфиге?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    посмотрите есть ли конфиг в домашней директории пользователя ~/.config/i3/config
    если он там есть то он имеет приоритет над /etc/i3/config
    Ответ написан
    Комментировать
  • Получить для обработки цикла файлы по маске из папки отсортированые по дате?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $LS="ls -t | grep database"
    for li in $LS
    do
    echo $li
    done


    первое
    неправильно указанна переменная при присвоении ей значения:
    $LS=...
    правильно будет:
    LS=...

    второе
    LS="ls -t | grep database"
    здесь вы переменной LS присваиваете строку, а нужно результат выполнения
    LS="$(ls -t | grep database)"

    в итоге должно получится как-то так:
    LS="$(ls -t | grep database)"
    for li in $LS
    do
    	echo $li
    done
    Ответ написан
  • Как получить распарсить и вернуть строку из функции bash?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    ох и запутанно вы объясняете, пол часа медитировал прежде чем примерно понять что вам нужно, хотя и то не уверен

    как написать функцию в bash, чтобы она принимала один аргумент, а внутри можно было этот аргумент (строку) распарсить и вернуть из неё число

    foo() {
    	foo_arg1="$1"
    	echo "$foo_arg1" | awk -F- '/^p-[[:digit:]]{1,}$/{printf $2}'
    }
    foo p-4 # вернет 4

    сделал регуляркой с проверкой на число после p-

    потом вызвать уже в блоке if при соответствующем условии myFunc $1
    код в if
    elif [[ $1 == 'p-"${2}"' ]]; then
      ...прочий конфиг --mark myFunc $2

    во первых, 'p-"${2}"' это будет именно строка p-"${2}" а не p-чтототам, так как тут обрамлено в одинарные кавычки, правильнее было бы условие написать так:
    [[ "$1" == "p-$2" ]]

    то есть примерно будет такой скрипт:
    #!/usr/bin/env bash
    
    arg1="$1"
    arg2="$2"
    
    foo() {
    	foo_arg1="$1"
    	echo "$foo_arg1" | awk -F- '/^p-[[:digit:]]{1,}$/{printf $2}'
    }
    
    if [[ "$arg1" == "p-$arg2" ]]; then
    	echo --mark $(foo $arg1)
    fi
    exit

    допустим назовем скрипт 0.sh, тогда
    ./0.sh p-4 4
    --mark 4
    ./0.sh p-4 5 # ничего не выведет так как p-4 неравно p-5
    Ответ написан
    6 комментариев
  • Как запустить arch linux на beaglebone black?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    #!/usr/bin/env bash
    
    set -o xtrace
    set -o errexit
    
    MicroSD="/dev/sdX"
    DIR="/tmp/bbb"
    MNT="$DIR/mnt"
    
    rm -rf $DIR
    mkdir -p "$MNT"
    
    dd if=/dev/zero of=$MicroSD bs=2M count=1 conv=fsync oflag=direct status=progress
    echo -e "label:dos\nstart=2M" | sfdisk $MicroSD
    yes | mkfs.ext4 -O '^metadata_csum,^64bit' -m1 ${MicroSD}1
    mount ${MicroSD}1 "$MNT"
    
    am33x=ArchLinuxARM-am33x-latest.tar.gz
    curl -L -o $DIR/$am33x "http://os.archlinuxarm.org/os/$am33x"
    bsdtar -xpf "$DIR/$am33x" -C "$MNT" && sync
    
    dd if=$MNT/boot/MLO of=$MicroSD bs=128k count=1 seek=1 conv=notrunc,fsync oflag=direct status=progress
    dd if=$MNT/boot/u-boot.img of=$MicroSD bs=384k count=2 seek=1 conv=notrunc,fsync oflag=direct status=progress
    
    umount "$MNT"
    exit
    Ответ написан
    Комментировать
  • В убунту можно сделать какое то уведомление, что то вроде "заканчивается оперативная память", и начинается использование свапа?

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

    ну так в чем проблема то ?
    чтобы посмотреть память есть команда free или даже напрямую через cat /proc/meminfo
    для вывода уведомлений можно использовать, к примеру, notify-send
    чтобы всё это зациклить в баше есть while

    while :;do if [[ "$(free | awk '$1=="Mem:"{print $2-$3}')" < $[1*1024*1024] ]];then notify-send 'Палундра' "Приближается пушистый северный зверёк";fi;sleep 1;done

    вот простенький пример однострочника, где мы проверяем каждую секунду(sleep 1) память с помощью утилиты free и если(if) разница($2-$3) между total и used памятью(по умолчанию измеряется килобайтах) меньше чем 1 Гиг ( $[1*1024*1024] k) то мы начинаем бить тревогу выводя сообщение через утилиту notify-send

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

    zram спасёт отца русской демократии
    Ответ написан
    Комментировать
  • Как ускорить загрузку firefox со старым профилем?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    сам перепробовал много чего, но в конечном итоге остановился на загрузке профиля в оперативную память и управление с помощью утилиты profile-sync-daemon
    соответствующая статья есть на archWiki - Firefox/Profile on RAM
    конкретно по утилите Profile-sync-daemon
    Ответ написан
    Комментировать
  • Изменение названия русских названий файлов при распаковке zip архива?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $ convmv --unescape --notest %D0%BF1%D0%BF.jpg
    mv "./%D0%BF1%D0%BF.jpg"	"./п1п.jpg"
    Ready! I converted 1 files in 0 seconds.
    Ответ написан
    2 комментария
  • Перенос Ubuntu с SSD на NVMe, проверить NVMe?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    решение в комментариях к вопросу
    Ответ написан
    Комментировать
  • Парсинг файла bash?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    В скрипте bash я создаю переменную которая вытаскивает из этой строки S4BZJ045 следующим образом:
    SystemName=$(cat server_out.db | grep 'SystemName' | awk '{print $2}' )

    слишком многословная команда, можно сократить:
    SystemName=$(awk '/SystemName/{printf $2}' server_out.db)


    В ответ получаю NotOK, я понимаю, что проблема в лишних символах в переменной SystemName. Проверял через WC:

    скорее всего проблема в переводе строки, print в конце ставит \n, чтобы этого избежать используйте printf
    Ответ написан
    1 комментарий
  • Как управлять браузером параллельно другим приложениям?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    устанавливаем mpv и yotube-dl
    далее, запускаем в консоли IPC-сервер и видео с нужным роликом (пример):
    mpv --input-ipc-server=/tmp/mpvsocket "https://www.youtube.com/watch?v=GYE2P7BWBAs"

    (при желании можно еще дополнительно установить браузерное расширение для запуска команды(видео) чтобы каждый раз не лезть в консоль)
    в другой консоли набираем команды (пример):
    echo '{ "command": ["set_property", "pause", true] }' | socat - /tmp/mpvsocket

    поставить на паузу

    echo '{ "command": ["set_property", "pause", false] }' | socat - /tmp/mpvsocket

    продолжить воспроизведение

    (детальнее смотри mpv:JSON IPC )
    в общем, вешаем данные команды на горячие клавиши и вуаля

    п.с.
    последние две команды пауза и воспроизведение можно записать немного проще и в одной команде:
    echo "cycle pause" | socat - /tmp/mpvsocket
    если пауза то начнёт воспроизведение, а если воспроизводится то ставит на паузу.
    Ответ написан
    Комментировать
  • Как реализовать парсинг параметров, введённых в произвольном порядке?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    https://devhints.io/bash
    Getting options
    while [[ "$1" =~ ^- && ! "$1" == "--" ]]; do case $1 in
      -V | --version )
        echo $version
        exit
        ;;
      -s | --string )
        shift; string=$1
        ;;
      -f | --flag )
        flag=1
        ;;
    esac; shift; done
    if [[ "$1" == '--' ]]; then shift; fi

    пример когда опции передаются в скрипт с параметром(-s | --string) и без(-V | --version и -f | --flag), правим под себя
    Ответ написан
    Комментировать
  • Можно ли вывести значение переменной http?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    x=$(awk -F'[ "]' '$1=="DocumentRoot"{print $3}' /etc/httpd/conf/httpd.conf)

    записали в переменную x нужное значение, а теперь выводим:
    $ echo $x
    /var/www/html
    Ответ написан
    Комментировать
  • Как клонировать систему со всеми пользователями и настройками на меньший по объёму диск?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    1. вставляете диск2
    2. подготавливаете диск2, создав и отформатировав разделы
    3. монтируете разделы диска2 к своей системе
    4. внимательно читаете это
    5. выставляете в rsync то что вам нужно и копируете данные с диск1 на диск2
    6. на диске2 правите fstab и чините свой загрузчик
    7. отключаете диск1 и запускаете систему с диска2

    можно проделывать из системы которую переносим и без бекапа (так как мы не трогаем основную систему и в случае чего можно просто загрузится с диска1)
    Ответ написан
    Комментировать
  • Как с помощью awk вставить # в строчку 647?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Как с помощью awk вставить # в строчку 647?

    вставить куда ? начало, конец, посередине ?
    если в начало, то:
    awk -i inplace 'NR==647{print "# "$0}NR!=647' a.txt

    где изменения мы пишем(-i inplace) прямо во входящий файл, в строку(NR) 647, добавляя перед всей строкой($0) решетку с пробелом("# "), при желании можно и без пробела("#"). Остальные строки(NR!=647) мы просто печатаем без изменений.
    Ответ написан
    Комментировать
  • Что будет, если постоянно держать температуру процессора без разгона на близких к критическим значениям (к примеру, 85-90 градусов при TJUNCTION 100)?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    в принципе допустимо, НО нужно не забывать что при эксплуатации - вентилятор постепенно забивается пылью, а термопаста сохнет и чем больше температура тем быстрее, то есть, через год ваши 85-90 могут превратится в 95-100.

    по поводу повреждений из за перегрева можно почитать что опишут в интел:
    Может ли процессор повредиться из-за перегрева?

    Маловероятно, что процессор будет поврежден из-за перегрева, поскольку в нем применяются соответствующие меры безопасности. Процессоры имеют два режима тепловой защиты, регулировки мощности и автоматического выключения. Когда ядро превышает установленную температуру для дросселирования, снижается мощность для поддержания безопасного уровня температуры. Предельные температуры могут отличаться для различных процессоров и настроек BIOS. Если процессор не может поддерживать безопасную рабочую температуру посредством дросселирования, он автоматически отключается, чтобы предотвратить необратимое повреждение.
    Ответ написан
    5 комментариев