• Как отключить логи в ubuntu?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    можно в конфиг /etc/systemd/journald.conf заведующего журналированием systemd раскомментировать/добавить/изменить несколько значений:
    Storage=volatile
    RuntimeMaxUse=100M

    Storage - где будет храниться журнал, значение volatile хранит журнал в оперативную память(ОЗУ), а точнее в /run/log/journal , а при желании можно вообще отключить хранение логов указав none
    RuntimeMaxUse - максимальный общий размер хранения записей журнала в /run/log/journal

    после перезагрузки системы или перезапуска журнала можно будет почистить старые залежи:
    rm /var/log/journal/*

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

    отзывчивость* - скорость записи в озу намного больше чем в ssd, также сам диск меньше отвлекается от более насущных для пользователя задач.
    ресурс** - имеется в виду не тока циклы перезаписи ячеек в диске но и размер самого журнала, который если его не ограничивать может достигать 10% от размера файловой системы где он расположен но не больше 4гиг.
    Ответ написан
    Комментировать
  • Как убрать перенос строки при копировании в буфер обмена (echo, cut, xclip)?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    как вариант, попробуйте
    cut -c1-64
    заменить на
    awk '{printf $1}'

    п.с
    хотя можно просто добавить для cut ключ -z чтобы он после обработки данных не переводил строку
    cut -c1-64 -z

    -z, --zero-terminated
    line delimiter is NUL, not newline
    Ответ написан
    1 комментарий
  • Существует более мощный, чем nano текстовый редактор из командной строки?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    dte
    а вообще смотри и выбирай по вкусу - Text_editors
    Ответ написан
    4 комментария
  • Что означает данная конструкция в bash?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если проделать в консоли
    $ echo ${0}
    /usr/bin/zsh
    $ echo ${0##*/}
    zsh

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

    а по поводу ${STR##*/} смотри parameter-expansions, если кратко то конкретно здесь он служит для выделения имени(краткого) из пути
    Ответ написан
    Комментировать
  • Pacman выдает ошибку "error: failed rerrieving file "code.db" from mirror.osbeck.com", что делать?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    error: failed rerrieving file «code.db» from mirror.osbeck.com


    вы бы проверяли на ошибки, там походу должно звучать примерно так
    error: failed retrieving file core.db from mirror.osbeck.com

    невозможно скачать файл базы дынных core.db (репа core) c сервера mirror.osbeck.com
    то есть, на момент обновления репозиториев с сервера у вас небыло связи с указанным сервером, а это либо проблемы с интернетом либо проблема в доступе к конкретно этому серверу

    сам сервер mirror.osbeck.com расположен в Швеции, список доступных серверов можете глянуть на оф сайте https://archlinux.org/mirrors/status/#successful
    а при желании даже сгенерировать https://archlinux.org/mirrorlist/
    подберите тот к которому есть беспроблемный доступ и внесите его в файл /etc/pacman.d/mirrorlist
    (не забудте раскомментировать нужный если генерировали через сайт)
    после чего обновите базу
    sudo pacman -Syy
    ну или сразу с обновлением базы обновить и сами установленные пакеты в системе:
    sudo pacman -Syyu
    Ответ написан
  • Как с помощью sed перенести ip и подставить перед запятой?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $ awk '!/,$/{x=x$0}x!=""{print x;x=""}/,$/{x=$0}' 1.txt
    mail.yandex.net,
    mail.mail.ru,88.88.88.88
    mail.mail1.ru,
    mail.asdl2.ru,
    mail.asd.ru,77.77.88.88
    Ответ написан
    Комментировать
  • Замена с sed/awk только второго вхождения в определенной колонке csv. Как?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    awk 'BEGIN{FS=OFS=";"} {if($3 ~ /^[0-9]/) {$3=";"$3};print}'

    пример:
    a='4535;First Name Last Name;9995554443;0;0;0;9998887744
    4523;First Name Last Name;Some Comment //with numbers [etc];9995554443;0;0;0;9998887744'
    
    echo "$a" |awk 'BEGIN{FS=OFS=";"} {if($3 ~ /^[0-9]/) {$3=";"$3};print}' |csview -d';'
    ┌──────┬──────────────────────┬───────────────────────────────────┬────────────┬───┬───┬───┬─────────────┐
    │ 4535 │ First Name Last Name │                                   │ 9995554443 │ 0 │ 0 │ 0 │ 9998887744  │
    ├──────┼──────────────────────┼───────────────────────────────────┼────────────┼───┼───┼───┼─────────────┤
    │ 4523 │ First Name Last Name │ Some Comment //with numbers [etc] │ 9995554443 │ 0 │ 0 │ 0 │ 9998887744  │
    └──────┴──────────────────────┴───────────────────────────────────┴────────────┴───┴───┴───┴─────────────┘

    здесь используется простенькое условие что если третий($3) столбец начинается на цифру( ^[0-9]) то мы просто добавляем в начале данного столбца точку с запятой (;)
    Ответ написан
  • Как сделать, чтобы скрипт прекращался при сочетании клавиш, в GNU/Linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    можно сделать так:
    в самом скрипте в начале добавьте строку:
    echo $$ > /tmp/myscript.pid

    теперь зная PID процесса запущенного скрипта можно легко его прибить командой:
    kill -9 $(cat /tmp/myscript.pid)
    данную команду легко повесить на сочетании клавиш воспользовавшись инструментами графической оболочки которую используете.
    Ответ написан
    Комментировать
  • Можно ли посмотреть логи FileZilla?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    можно, но тока если предварительно была включена запись в лог-файл
    Логирование
    Начиная с версии 3.2.0-rc1 FileZilla способен записывать лог в файл. В отличии от экранного лога, по умолчанию логирование в файл отключено.
    Ответ написан
    Комментировать
  • Как написать команду на bash, переименующую все файлы в каталоге в 0.bmp 1.bmp 2.bmp...?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    eval $(ls |awk '{i++;print "mv "$0" "i".bmp;"}')

    для подстраховки, если в именах есть пробелы то предварительно нужно взять их в кавычки ' (\x27)
    eval $(ls |awk '{i++;print "mv \x27"$0"\x27 "i".bmp;"}')
    Ответ написан
    Комментировать
  • Как найти определенный символ в строке файла и выполнить над этой строкой действие (sh)?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    вариант 1
    awk '/:0$/' file1 > file2

    вариант 2
    awk -F: '$NF==0' file1 > file2
    Ответ написан
    Комментировать
  • Где найти подписи к пакету?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    там ниже в коментах под данным пакетом в АУРе закреплен пост сопровождающего данный пакет:
    --> ALWAYS DO A CLEAN BUILD <--
    This package will verify the signature of the git tag / commit. Developer keys are available here and instructions are here. See the PKGBUILD to determine which developer key you need.

    то есть, смотрите PKGBUILD данного пакета
    а именно вот эту конкретную переменную:
    validpgpkeys=('EA0A77BF9E115615FC3BD8BC7653B940E494FE87'
                  # Linus Färnstrand (code signing key) <linus@mullvad.net>
                  '8339C7D2942EB854E3F27CE5AEE9DECFD582E984'
                  # David Lönnhager (code signing) <david.l@mullvad.net>
                  )

    нам нужны ключи:
    Linus Färnstrand
    David Lönnhager
    идем сюда и качаем их
    а потом сюда и смотрим как их установить
    если конкретно то
    gpg2 --import xxxx.asc
    чистим кеши от прошлых установок пакетов:
    sudo pacman -Scc
    ну а дальше пробуйте уже установить данный пакет
    Ответ написан
    Комментировать
  • Как извлечь названия программ из команды в bash?

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

    список всех программ расположенных в $PATH
    $ ls ${PATH//:/ } |awk 'NF && !/:$/'

    список, а точнее описание, встроенных(builtin) команд в оболочку bash можно посмотреть с помощью команды help
    $ help

    но думаю правильнее будет использовать type для определения типа команды
    $ type -t rg
    file
    $ type -t cd
    builtin

    $ 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


    тип file по сути это чисто внешние программы, а builtin - внутреннии, на счет остальных могут быть нюансы, то есть при проверке через type оставляем тока те утилиты которые возвращают file.

    В итоге мы можем сгенерировать список(file.txt) чисто внешних программ из тех что лежат в $PATH:
    $ for i in $(ls ${PATH//:/ } |awk 'NF && !/:$/');do [[ $(type -t $i) == "file" ]] && echo $i;done > file.txt


    Допустим у нас есть файл test.txt с историей команд:
    sudo ls  | awk '!($NF ~ /\.[a-z]+$/)'
    for i in ~/*; do echo $(locate -c -r $i) $i; done | pv | sort -nr | bcat -t
    for f in *.zip; do unzip $f; done
    RACK_HANDLER=falcon rails s


    тогда:
    $ grep -o -w -n -f file.txt test.txt
    1:sudo
    1:awk
    2:pv
    2:sort
    3:zip
    3:unzip


    единственный недостаток это каждое совпадение пишет с новой строки, исправляем с помощью awk:
    $ grep -o -w -n -f file.txt test.txt |awk -F: '{if($1!=i){printf $2" "}else{print $2};i=$1}'
    sudo awk
    pv sort
    zip unzip


    если сравнивать с вашим шаблоном:
    sudo ls awk
    pv sort bcat
    unzip
    rails


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

    также естественно что иногда будут происходить косяки как например тут с zip при анализе строки
    for f in *.zip; do unzip $f; done
    zip тут не выступает в роли программы, но это всё же слово которое совпало с нашим списком утилит.
    bcat и rails не вывело так как данных программ не установленно.

    в общем если кратко то всё это реализовывается в два однострочника на bash:
    $ for i in $(ls ${PATH//:/ } |awk 'NF && !/:$/');do [[ $(type -t $i) == "file" ]] && echo $i;done > file.txt
    $ grep -o -w -n -f file.txt test.txt |awk -F: '{if($1!=i){printf $2" "}else{print $2};i=$1}'
    Ответ написан
    2 комментария
  • Как искать вхождения из списка фраз в linux?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    grep -f файл1 файл2
    файл1 - "В одном файле список слов."
    файл2 - "Во втором большой список строк."

    man grep
    -f FILE, --file=FILE
    Obtain patterns from FILE, one per line. If this option is used multiple times or is combined with the -e (--regexp) option, search for all patterns given. The empty file contains zero patterns, and therefore matches nothing.
    Ответ написан
    Комментировать
  • Как получить вывод в рамке с переносом строк?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Хочу создать рамку вокруг вывода, для этого использую функцию
    msg="# $* #"

    что-то вообще не то

    как вариант размер можно контролировать через column
    MEM="Memory Usage: 277/1983MB (13.97%)"
    HDD="Disk Usage: 5/16GB (35%)"
    CPU="CPU Load: 0.00"
    VAR="$MEM\n$HDD\n$CPU"
    banner() {
    	v="$@"
    	x=$(echo -e "$v" |awk '{if(length>max)max=length}END{for(i=1;i<max+5;i++){printf "#"}}')
    	echo "$x"
    	echo -e "$v" |awk '{print "# "$0" #"}' |column -t -s: -o: |column -t -s'#' -o'#'
    	echo "$x"
    }
    banner "$VAR"

    вывод
    #####################################
    # Memory Usage: 277/1983MB (13.97%) #
    # Disk Usage  : 5/16GB (35%)        #
    # CPU Load    : 0.00                #
    #####################################


    хотя если есть возможность изначально контролировать вид получение MEM, HDD, CPU то будет проще записать данные через тот же csv а его вывод уже форматировать соответствующими программами, например csview

    MEM="Memory,277/1983MB,13.97%"
    HDD="Disk,5/16GB,35%"
    CPU="CPU,0.00,"
    echo -e "$MEM\n$HDD\n$CPU" |csview -H --style Reinforced

    вывод:
    ┏────────┬────────────┬────────┓
    │ Memory │ 277/1983MB │ 13.97% │
    │ Disk   │ 5/16GB     │ 35%    │
    │ CPU    │ 0.00       │        │
    ┗────────┴────────────┴────────┛
    Ответ написан
    3 комментария
  • Можно ли установить компьютер на застекленном балконе?

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

    Рабочая температура жесткого диска

    Температурный режим жесткого диска гораздо ниже температур процессора или видеокарты, что вполне очевидно, поскольку иначе бы диски выпускались с активным охлаждением. Нормальная температура жесткого диска находится в диапазоне 25-45 градусов по Цельсию. Если ваш диск работает при 46 градусах, это не значит, что он прямо сейчас сломается. Нет, диск будет далее работать, но любые значения выше рабочей температуры (в разумных пределах) будут потихоньку укорачивать время жизни диска и надежность его работы.

    Производители жестких дисков часто указывают приемлемые для работы диска температуры. Учтите, что приемлемые температуры – это не то же самое, что нормальные или идеальные температуры для накопителя. Приемлемая температура указывает на диапазон, в котором диск может работать в принципе. Современные накопители обладают диапазоном приемлемой температуры от 0 до 60 градусов по Цельсию. Более старые от 5 до 50 градусов.

    Вы наверняка знаете, что у процессоров и видеокарты нет слишком низкой температуры. Чем она ниже, тем эффективнее работа (грубо говоря). Именно поэтому экстремальные оверклокеры пользуются жидким азотом для охлаждения камней. Такой подход не подойдет для жестких дисков. Для современного HDD губительна не только слишком высокая, но и слишком низкая температура. Хотя 5-10 градусов по Цельсию все еще будет в пределах рабочей температуры, рекомендуемой производителем, подобная среда вредна для диска, поскольку негативно сказывается на подшипнике скольжения и смазочных материалах.

    Проще говоря, деградация диска происходит как на высоких, так и на низких температурах. Оптимальная рабочая температура жесткого диска колеблется от 25 до 45 градусов. Придерживайтесь этого показателя и ваш диск прослужит вам долго, если не пострадает от других неприятностей.
    Ответ написан
  • Есть ли почтовый сервис с API для чтения сообщений?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    зачем такие сложности, можно просто взять те же гималаи и отработать всё у себя на сервере
    регистрируете одну почту на том же gmail
    далее подключаете её через конфиг
    после получаете список письм в виде json, отбираете нужные
    himalaya --output json list
    можно даже сразу через search отобрать нужные
    далее читаете(read) отобранные письма по номерам и парсите их содержимое на наличие нужной информации
    Ответ написан
    Комментировать
  • Как распарсить несколько url из файла в формате "excel"?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    сохраняйте документ в csv, а его уже любым удобным инструментом обрабатывайте
    Ответ написан
    6 комментариев
  • Как найти строку в текстовом файле с помощью grep?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Да, поиск по json

    если у вас файл json типа такого:
    file.json
    [
    {"id": "5644561-46484-546545" , "number": "879876-5644561-546545" ,"reestr":"46878-6214-8794"},
    {"id": "6644561-46484-546545" , "number": "979876-5644561-546545" ,"reestr":"56878-6214-8794"},
    {"id": "7644561-46484-546545" , "number": "079876-5644561-546545" ,"reestr":"66878-6214-8794"}
    ]


    то там довольно всё просто делается используя консольную утилиту jq:
    $ jq -r '.[] | "\(.id): \(.reestr)"' file.json
    5644561-46484-546545: 46878-6214-8794
    6644561-46484-546545: 56878-6214-8794
    7644561-46484-546545: 66878-6214-8794


    если нужен конкретный id:
    $ jq -r '.[] | select(.id == "7644561-46484-546545") | "\(.id): \(.reestr)"' file.json
    7644561-46484-546545: 66878-6214-8794


    ну или через внешнюю переменную:
    $ jq -r --arg ID "7644561-46484-546545" '.[] | select(.id == $ID) | "\(.id): \(.reestr)"' file.json
    7644561-46484-546545: 66878-6214-8794
    Ответ написан
    Комментировать
  • Как экранировать "-" при работе утилиты jq?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    jq '."target-hosts"' deploy.json
    Ответ написан
    Комментировать