LINUX.ORG.RU

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

Альтернатива книгам Криса Касперски

Форум — Security

Друзья, собсна сабж прост - есть ли современная альтернатива книгам Криса Касперски?

 

Oxff ()

Как улучшить отзывчивость курсора?

Форум — Desktop

Использую Last KDE, Manjaro.
иногда тормозит курсор при некоторых «тяжелых» операциях вроде форматирования флешки или загрузки мелких файлов в браузере.
Поможет ли переход на RT-kernel?
В какую сторону копать?

Ноут на core i5 8го поколения + 16гб оперативной памяти + swap 4гб +ssd + Linux 5.1

 , ,

Centrin0 ()

Как увеличить количество открытых файлов?

Форум — Admin

Всем привет. Появилась проблема, уже всё перепробовал, может вы подскажете. Есть сервер с 32 ядрами и 128гб рамы. Есть некий софт, который на 1 процесс плодит 10к открытий файлов. Запускаю несколько сотен этих процессов - и всё валится по лимиту на открытие файлов. По lsof получается открытых файлов всего в системе около 2.5 млн.

В sysctl:

fs.file-max = 30000000

ulimit -a :

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 514786
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1000000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 514786
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Хочу выставить hard-лимит открытых файлов в 10 млн и получаю ошибку:

ulimit -Hn 10000000
-bash: ulimit: open files: cannot modify limit: Operation not permitted

security.limit:

*   soft    nproc   1000000
*   hard    nproc   1000000
*   -       nofile  10000000
root -      nofile 10000000
worker -    nofile 10000000
worker1 -   nofile 10000000
*   -       memlock unlimited

Так же по наступлению лимита баш при использовании пайпов говорит что не может форкнуться. Я что-то не так делаю, или чего-то не понимаю? Или ещё где-то выше захардкожен в ядре лимит?

Всем буду очень благодарен за помощь.

PS файлы открываются в /dev/shm/, так что сервер всё это дело сильно не должно нагружать. Уменьшать количество открытий файлов тоже не вариант, т.к. по сути эти открытия создаёт блоб, который сложно расковырять.

 ,

mahalaka ()

Бенчмарки для терминалов

Форум — Development

Есть чего-то обще принятое? На трупут можно на колене сделать, а вот на лэйтенси? Может у похороникса чего кто видел?

 , , ,

pon4ik ()

Creative Commons запускает сервис по поиску бесплатного контента

Форум — Talks

После более чем двух лет бета-тестирования начал свою работу сервис поиска CC Search, куда уже сейчас включено более 300 миллионов свободных изображений.

https://roskomsvoboda.org/46912/

https://search.creativecommons.org/

Позже обещают добавить поиск книг, аудио и прочего.

Я считаю это победа! Мочи копирастов свободным контентом.

 , , , ,

Maniac_with_a_saw ()

Как отключить автоматическое перенаправление в Pale Moon 28?

Форум — General

Собственно сабж. Есть такие сайты, которые не дают загрузиться контенту полностью и используют HTTP перенаправление хз куда (JS то у меня отключен). В Opera 12 для этого есть галочка «включить автоматическое перенаправление». Если она снята, то она каждый раз предупреждает. Для Firefox (не Quantum) и Pale Moon есть расширение NoRedirect https://addons.thunderbird.net/en-us/firefox/addon/noredirect/ . С ним действительно предупреждает. Но вот открываю я ссылку на jpg картинку, в Опере (со снятой галочкой) картинка остается, а в FF после ее загрузки вываливается ошибка DNS или предупреждение о переадресации, которое заменяет картинку и вернуться назад нельзя.

Кстати, раньше в FF была галочка «предупреждать при попытке сайта перезагрузить страницу», впрочем по отзывам она толком не работала.

Проблемный сайт http://s2.1pic.org/files/2018/01/20/ca8628a1b10e65bdf44d.jpg
Возможно, он просто неправильно настроен (сломался), потому что даже http://1pic.org не открывается из-за зацикливания переадресации, однако в Опере это можно обойти.

Все-таки Opera Presto легенда. Вернуться что-ли на винду, где у нее нет проблем с сертификатами?

 ,

nakita ()

странное копирование на USB

Форум — General

привет!

при копировании файла на USB(любым способом), ощущение такое, что файл целиком читается в какой-то буфер и только потом пишется на USB, и пишется очень медленно %)

если копировать при помощи какого-то GUI, то индикатор прогресса сразу показывает %100, но копироваться реально будет еще ооочень долго.

подскажите, куда копать?

спасибо.

 ,

niXman ()

А как на github выставить язык для проекта (автоопределение работает криво)

Форум — Development

Имею проект на C++/Qt на Github: https://github.com/xintrea/mytetra_dev .

На обзорной странице он отображается с какими-то странными языками: одно время показывался язык C++, потом стал показываться Objective-C, теперь вообще показывает HTML. Какое-то странное автоопределение. Полез в настройки и ничего по поводу языка проекта не нашел.

Може, я чего не понял или не увидел, и настройка языка проекта таки где-то есть?

 

Xintrea ()

нашёл сервис для поиска поддерживаемых форков на github

Форум — Development

http://forked.yannick.io

Заходишь туда, забиваешь имя репозитория, например, mleibman/SlickGrid и тебе показывают табличку, в которой достаточно ясно, какие форки поддерживаются. До этого сервиса я смотрел сеть форков, её нужно было отлистать направо (для этого, правда, есть горячая клавиша) и далее по виду сети как-то угадывать, тыкаться в каждый и т.п.

А можно сразу задать репозиторий в URL, только github.com заменить на forked.yannick.io

http://forked.yannick.io/mleibman/SlickGrid

 ,

den73 ()

Вьюер пикч в терминале

Галерея — Скриншоты

Давным-давно, когда мы еще писали консольный вк, хотелось прикрутить пикчи к ncurses. Чекали w3m, еще пару тулов, но у всех были проблемы с рендером, саппорт не всех терминалов и т.д.

И тут я наткнулся на Überzug

Отличная вещь, написана на питоне, там и примеры для курсов в ридми.

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

#!/bin/bash
[[ -z "$1" ]] && echo "Error: image path not specified" && exit 1
source "`ueberzug library`"

echo -ne "\033[6n"
read -s -d\[ garbage
read -s -d R cursor_y
cursor_y=(${cursor_y//;/ })
cursor_y=`expr $cursor_y - 1`

tmp=`stty size`
size_y=`echo $tmp | cut -f1 -d' '`
size_x=`echo $tmp | cut -f2 -d' '`

max_height=`expr $size_y - $cursor_y`

ImageLayer 0< <(
    ImageLayer::add [identifier]="example0" [x]="0" [y]="$cursor_y" [max_width]="$size_x" [max_height]="$max_height" [path]="$1"
    read
)

По зависимостям один питон пакет:

  sudo pip install ueberzug

Сам скрипт тут

Делаем симлинк в /usr/bin/ и радуемся пикчам в терминале

Github

Telegram

>>> Просмотр (1920x1080, 3671 Kb)

 , ,

HaCk3D ()

Как переприцепить процесс с одного терминала на другой?

Форум — General

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

 

tsmx ()

Cross Platform Package Manager for C++

Форум — Development

Добрый День,

Решал прикладную задачу на C++ и понял, что не плохо бы поделиться с миром инструментом для Cross Platform Package Manager for C++

Документация и детали доступны здесь: https://github.com/amidukr/pak-c-mak

Интересны фидбеки, стоит ли мне продолжать?

 , , , ,

amidukr ()

Максимально простое gui приложение, что бы рисовать графики

Форум — Development

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

 , , ,

onhydro ()

rtorrent не возобновляет загрузки

Форум — General

Всем салют!

В общем намучался я с rtorrent.. Суть проблемы:

Есть rtorrent + rutorrent. Если поставить загрузку на паузу или остановить, то после возобновления торрент попадает в Error c такими сообщениями в лог:

tracker_list: Failed to connect to tracker url:'http://retracker.local/announce' msg:'Couldn't resolve host name'.
1537365956 I 95B691A59F954B410F909845F41CCA07D4BD55FD->tracker_controller: Sending stopped event.
Дело это я гуглил - все бычат на curl без c-ares. Пробовал и с ним - результат тот же. Само собой с хоста все резолвиться четко. Испытания проводились на ubuntu 18.04 и FreeBSD 11.1.
rtorrent.rc:
scgi_port = 0.0.0.0:5000
session = /home/.session
directory = /home/share/.newFolder
log.open_file = "rtorrent", /tmp/rtorrent.log
log.add_output = "tracker_debug", "rtorrent"
log.add_output = "connection_debug", "rtorrent"
log.add_output = "storage_debug", "rtorrent"
encoding_list = UTF-8
min_peers = 40
max_peers = 1200
max_uploads = 15
download_rate = 10000
upload_rate = 5000
peer_exchange = yes
system.umask.set = 002
port_range = 51413-51413
check_hash = yes
use_udp_trackers = yes
dht = auto
dht_port = 6881
peer_exchange = yes

 

riso ()

Состоялся релиз дебаггера скриптов на bash'е - bashdb-4.4-1.0.0

Форум — Talks

Сабж. Изменения - https://fossies.org/linux/bashdb/NEWS .

Эта версия требует bash версии 4.4. С 5-м bash'ем эта версия не работает.

Скачать: https://sourceforge.net/projects/bashdb/files/bashdb/4.4-1.0.0/bashdb-4.4-1.0...

 ,

saahriktu ()

Как починить раскладку Бирмана?

Форум — Desktop

В KDE PLasma в настройках раскладки клавиатуры есть параметр «Включить дополнительные типографские символы», и тогда можно будет вводить всякие интересные символы типа длинного тире, дробей и т.п.

Однако, в моей openSUSE набор доступных символов отличается от набора в Росе, где реализована полноценная раскладка И. Бирмана. Я вижу, что раскладка реализована как дополнение Xcompose, но не понимаю, как она подключается и используется в системе.

Короче говоря, как сделать в openSUSE KDE раскладку Бирмана?

 ,

kknight ()

Энергосбережение при закрытой крышке лэптопа

Форум — General

Привет, ЛОР!
Хочу поделиться с тобой скриптом для включения агрессивного энергосбережения при закрытой крышке ноутбука (при закрытии крышки делаем $script sleep, при открытии - $script resume)

Так, с подобным скриптом, мой Thinkpad x240 может жить с закрытой крышкой (но, естественно, без засыпания) около двух дней. (40 часов)

Сам скрипт - https://pastebin.com/AkjNt3r8
Настройки - $user - ваше имя пользователя, $display - номер дисплея X, $usbdevices - USB-девайсы, которые выключаем на время закрытой крышки; $ps_blacklist - процессы, которые оставляем активными (у меня bash, ssh, sshfs, плеер, пульса, жаббер-клиент и mate-power-manager, чтобы ноут ушёл таки в гибернацию при критическом заряде батареи)

Что делает - посылает SIGSTOP всем процессам, включает DPMS, отключает все ядра кроме одного и отключает указанные USB-девайсы.
Можно ещё раскомментить kill -STOP X, но тогда апплет network-manager'а начинает с ума сходить :)

 

annerleen ()

Динамические библиотеки, конспект

Форум — Development

Привет. Так вышло, что пришлось основательно разобраться в теме и пока память свежа изложил всё в виде небольшой памятки. Удобно по прошествии некоторого времени освежить память прочитав небольшой конспект. Вообще, по-хорошему, блог что ли какой завести )). Просьба - не флудить, ссылки/комментарии/дополнения по теме приветствуются. ЗЫ: подразумевается, что либы -fpic

1. Утилиты readelf, objdump. Читать man elf, man ld.so. N в именах структор
   подразумевает 32 или 64.
2. Структура ELF файла:
   1. заголовок (смещение 0, struct ElfN_Ehdr). Readelf::ELF Header
   2. program header table (массив struct ElfN_Phdr). Содержит информацию о том
      как отображать секции в память процесса. Readelf::Program Headers
   3. section header table (массив struct ElfN_Shdr). Readelf::Section Headers
3. link_map   
3.1. Загруженные в память модули попадают в список (массив) из struct link_map.
     Списков может быть много, каждый список - "пространство имён". Для
     загрузки модулей в неглобальный список (создание нового) используется
     dlmopen().
3.1. Получать link_map модуля через dlinfo() или dladdr1():
     [--code--]
     #define _GNU_SOURCE
     #include <link.h>
     #include <dlfcn.h>
     #include <stdio.h>
     int main()
     {
        static char addr_in_mod;
        Dl_info __info;
        struct link_map *lm;
        if(dladdr1(&addr_in_mod, &__info, (void*)&lm, RTLD_DL_LINKMAP) != 0) {
           printf("link_map:\n");
           struct link_map *i = lm;
           for(; i->l_prev != NULL; i = i->l_prev);
           for (; i != NULL; i = i->l_next)
              printf("addr diff=%p  name=%s%s",(void*)i->l_addr,  i->l_name, i==lm?"  <--cur\n":"\n");
        }
     }
     //output:
     //link_map:
     //addr diff=0x41f000  name=  <--current module
     //addr diff=0xb7fc4000  name=linux-gate.so.1
     //addr diff=0xb7fa3000  name=/lib/libdl.so.2
     //addr diff=0xb7dc5000  name=/lib/libc.so.6
     //addr diff=0xb7fc6000  name=/lib/ld-linux.so.2
     [/--code--]
3.2. Во время переразмещений символ ищется в модулях указанных в link_map
     списке начиная от начала списка т.е. порядок важен, "gcc -ls1 -ls2"
     libs1.so находится в списке раньше, чем libs2.so.
3.3. При добавлении библиотеки через LD_PRELOAD, она попадает перед остальными
     разделяемыми библиотеками в глобальном link_map списке.
3.4. Опция RTLD_DEEPBIND для dlopen - собственные символы модуля приоритетнее
     символов из вышестоящих в link_map списке модулей.
     Собственные символы загружаемой библиотеки содержат:
      1. символы из самой загружаемой библиотеке
      2. символы из библиотек, которые были слинкованы с загружаемой из
         командной строки (у первых приоритет выше).
3.5. При загрузки через dlopen, библиотеки добавленные с флагом RTLD_GLOBAL
     имеют приоритет над RTLD_LOCAL, не смотря на то, что находятся в link_map
     списке позже (не относится к получению void f() через dlsym()). Например:
     [--code--]
     // предоставляет void f(), ссылается на void f().
     dlopen("lib1.so", RTLD_LOCAL);
     // предоставляет void f().
     dlopen("lib2.so", RTLD_GLOBAL);
     // при ленивом переразмещении, lib1.so будет ссылаться на lib2.so::f().
     [/--code--]
4. RTLD_GLOBAL - символы из загруженного модуля будут участвовать в
   переразмещениях для заргуженных в дальнейшем библиотек. RTLD_LOCAL - не будут.
   Если lib2.so линкуется с lib1.so через командную строку
   "gcc -fpic -shared -l2 s.c -o lib1.so", то видимость символов из lib2.so
   наследуется от видимости символов из lib1.so:
   [--code--]
   dlopen("./lib1.so", RTLD_LAZY|RTLD_GLOBAL);    // символы из lib2.so глобальные
   dlopen("./lib1.so", RTLD_LAZY|RTLD_LOCAL);     // символы из lib2.so локальные
   [/--code--]
   Если lib2.so подгружается из lib1.so через dlopen(), то видимость символов
   из lib2.so контролируется флагом dlopen() при загрузке lib2.so. Способ
   загрузки (через командную строку или dlopen) и флаг для dlopen при
   загрузки lib1.so значения не имеет.
5. Переразмещение (relocation).
5.1. Переразмещение - процесс соединения символьной ссылки с символьным
     определением.
     Переразмещение: ленивое - загрузчик вызывается при ссылке на символ, и
     ненеленивое - переразмещение при загрузке. Переразмещение переменных всегда
     неленивое.
5.2. Символы, требующие переразмещения, содержатся в .rel... секциях. В них
     находятся ElfN_Rel структуры.
     [--code--]
     typedef struct {
         Elf32_Addr r_offset;    \\ адрес внесения правки (адрес в GOT, например. readelf::Offset).
         uint32_t   r_info;      \\ содержит тип переразмещения и индекс в таблице символов (массив Elf32_Sym[]).
     } Elf32_Rel;
     typedef struct {
         uint32_t      st_name;   \\ индекс в таблице строк. Т.е. сопостовляет символ с Си строкой.
         Elf32_Addr    st_value;  \\ адрес символа в текущем модуле (readelf::Sym.Value).
         uint32_t      st_size;
         unsigned char st_info;
         unsigned char st_other;
         uint16_t      st_shndx;
     } Elf32_Sym;
     [/--code--]
5.3. Механизм обращения к переменным (требующим переразмещений):
     1. линкер на старте правит .got секцию, она начинает указывать на нужные
        данные.
     2. ссылка на переменную в коде (в .text секции):
          [--code--]
          call   44c <__x86.get_pc_thunk.ax>  # получаем в eax адрес следующей инструкции
          add    $0x1bcb,%eax                 # в eax адрес .got секции
          mov    0x14(%eax),%edx              # отступ от края .got на адрес переменной,
                                              # разыменовываем в edx
          [/--code--]
5.4. Механизм обращения к функциям, для пример - exfn():
     1. ссылка на exfn() в коде (в .text секции)
     2. переход на "трамплин" в .plt секции - plt@exfn()
     3. переход на разыменованный указатель из .got.plt, если переразмещение
        уже было произведено, то попадаем на exfn(), иначе:
        3.1. возврат в plt@exfn(), в стек кладётся смещение в .rel.plt
             секции Elf32_Rel структуры и указатель на link_map список
        3.2. вызов ld.so, правится указатель в .got.plt
        3.3. переход на exfn().
6. .dynamic секция может быть прочитана из программы через массив _DYNAMIC[],
   который содержит struct ElfN_Dyn, автоматически заполняется линкером.
7. Экспортируемые символы из elf модуля указываются в .dynsym секции.
8. -rdynamic опция линкера (для исполняемого ELF) - символы из exe, которые не
   были востребованы библиотеками, указанными в командной строке, не
   экспортируются (не указываются в .dynsym секции) и не участвуют в
   переразмещениях в библиотеках, которые подргружаются через dlopen. Данная
   опция заставляет линкер помещать в таблицу все функции.
9. Управление экспортом из модуля
   * Управление экспортом по умолчанию:
     gcc -fvisibility=default
     -fvisibility=hidden
     -fvisibility=internal
     -fvisibility=protected
   * Управление экспортом посимвольно:
     __attribute__ ((visibility ("hidden")));
     __attribute__ ((visibility ("hidden")))
   * Для группы:
     #pragma GCC visibility push(hidden)
     ...
     #pragma GCC visibility pop
   * static и анонимные namespace
   * Управление эспортом через export map, через опцию --version-script

 , , ,

pavlick ()

Вывод строк в терминале

Форум — General

Есть ли способ сделать вывод в терминале не построчным (последовательное добавление строки в конец списка), а постоянно замещать строку?

Есть скрипт, который выдаёт динамическое кол-во строк в терминал (от 1 до 100). Выдаёт он их сейчас последовательно, т.е. выполнив 10-20 раз скрипт забивает окно терминала. Можно ли сделать так , чтобы при выполнении скрипта строки не писались последовательно, а просто замещали первый вывод?

Например как запустить команду ping. Чтобы строки не шли друг за ругом, а была только одна строка, которая меняется через определенное время?

P.S. пробовал добавить в скрипт команду clear - интерраптит скрипт.

 ,

tampap ()

segmentation fault

Форум — Development

Привет, x32, вот такой выхлоп от gcc -S

.LLSDACSE1:
	.byte 0x1
	.byte 0
	.align 4
        .long DW.ref._ZTI14Fake_Exception-.

DW.ref._ZTI14Fake_Exception:
	.long _ZTI14Fake_Exception
	.hidden DW.ref._ZTI9Exception
	.weak DW.ref._ZTI9Exception
        .section .data.DW.ref._ZTI9Exception,"awG",@progbits,DW.ref._ZTI9Exception,comdat

_ZTI14Fake_Exception:
	.long _ZTVN10__cxxabiv117__class_type_infoE+8
	.long _ZTS14Fake_Exception
	.weak _ZTS14Fake_Exception
        .section .rodata._ZTS14Fake_Exception,"aG",@progbits,_ZTS14Fake_Exception,comdat
пытаюсь под gdb прочитать адрес _ZTI14Fake_Exception::_ZTVN10__cxxabiv117__class_type_infoE+8
(gdb) x/1aw 0x401743      # .LLSDACSE1+4
0x401743:       0x190000
(gdb) x/1aw 0x190000
0x190000:       Cannot access memory at address 0x190000
модуль загружен в память по адресу 0x400000. Что я не так делаю?
При этом, адрекс _ZTVN10__cxxabiv117__class_type_infoE+8 == 0x402ed8 (посмотрел по символам модуля+адрес загрузки+8).

 ,

pavlick ()