Задать вопрос
  • Как в си узнать какой пользователь вошёл в систему linux?

    mikhanoid
    @mikhanoid
    Можно начать с man utmp.
    Ответ написан
    Комментировать
  • Как правильно вычислять vm.dirty_background_bytes и vm.dirty_bytes?

    TaHKucT
    @TaHKucT
    Linux администратор
    У меня ответ больше 10000 символов. Тостер его не пропускает, поэтому разобью его на ответа:

    Я так понимаю что для плавной работы Linux сервера, для плавной записи грязных страниц нужно поправить параметры vm.dirty_background_bytes и vm.dirty_bytes до соразмерных с величинами скорости записи на диск?

    Нет. vm.dirty_background_bytes - сколько байт можно занять под dirty pages до того, как эта память начнем автоматически синхронизироваться на диск. vm.dirty_bytes - сколько всего байт можно занять под dirty pages.

    Например у вас выставлен vm.dirty_background_bytes = 10, vm.dirty_bytes = 30, скорость записи на диск 2 байта в секунду, а скорость записи в ОЗУ 5 байт в секунду (все специально такое маленькое, что бы наглядно было понятно что происходит и не путаться в переводе значений из байт в мегабайты, байт в секунду в мегабиты в секунду и т.п.).
    (Сделаем оговорку что dirty pages работает намного сложнее, чем описанно ниже. Он работает со страницами, а не с байтами, он имеет привязку к конкретным файлам и еще куча нюансов. Ниже очень упрощенный вариант объяснения, что бы получить примерное представление о том, что вообще происходит).

    В Секунду 0 (начало примера) vm.dirty_background_bytes = 0, диск полностью простаивает и ничего не происходит (опустим момент что linux многопоточный и такая ситуация почти нереальна в реальной жизни). Вдруг какой-то процесс начинает писать что-то на диск, фактически он изменяет данные в ОЗУ и помечает страницу как dirty page, фактической записи на диск не происходит (если не происходит вызов fsync, но об этом ниже).
    То есть через секунду, в секунду 1 у нас расклад такой: vm.dirty_background_bytes = 5 (скорость записи в ОЗУ ведь равно 5, дальше будет предполагать что процесс всегда будет писать с этой скоростью, потому что например ему нужно многое записать и все данные к этому уже подготовленны), vm.dirty_bytes = 5 (vm.dirty_bytes - это доступный для dirty page объем памяти, vm.dirty_background_bytes - это часть от vm.dirty_bytes), скорость записи на диск = 0.
    Следующая, 2 секунда: vm.dirty_background_bytes = 10, vm.dirty_bytes = 10, скорость записи на диск = 0.
    Следующая, 3 секунда: vm.dirty_background_bytes = 15, vm.dirty_bytes = 15, скорость записи на диск = 2 (vm.dirty_background_bytes превысил установленные нами условные 10 байт и запускается процесс синхронизации, он выбирает на скорость 2 байта в секунду (как мы условились выше) данные и пишет их на диск) (тут можно спорить в какой именно момент запуститься процесс синхронизации dirty pages на диск, когда vm.dirty_background_bytes будет 9, 10 или 11, но в данном случае этот вопрос не принципиальный).
    Следующая, 4 секунда: vm.dirty_bytes = 18 (+5 записал процесс, -2 синхронизировал процесс синхронизации, итого 15+5-2=18). vm.dirty_background_bytes нас больше не интересует, потому что он синхронизатор уже запустился.
    5 секунда: vm.dirty_bytes = 18
    6 секунда: vm.dirty_bytes = 21
    7 секунда: vm.dirty_bytes = 24
    8 секунда: vm.dirty_bytes = 27
    9 секунда: vm.dirty_bytes = 30
    10 секунда: vm.dirty_bytes = 30 (vm.dirty_bytes уперся в вышеусловленное значение в 30 байт, больше места под dirty page у нас нет, поскольку синхронизирует записывает по 2 байта/с то мы упираемся в 2 байта/с, пока процесс не запишет все свои данные).
    ...
    Энная секунда: (процесс записал все необходимые ему данные): vm.dirty_bytes = 28
    n+1: vm.dirty_bytes = 26 (и т.п.).

    То есть как видно dirty page позволяет нам "сгладить" небольший всплекс на запись, за счет того, что данные, которые нужно записать на диск будут временно храниться в памяти. Причем именно кратковременный всплекс, потому что на долговременном всплекске вы забиваете всю память, отведенную под dirty page и после этого скорость записи падает до скорости работы диска. Очевидно что технология полезная и иногда нужная, но все сильно зависит от ваших парентов нагрузки (именно по этому все совеют разные числа, у кого-то один вариант показывает себя лучше, у кого-то другой.) Увеличивая размер vm.dirty_bytes вы с одной стороны увеличиваете размер пика, который получиться сгладить, с другой увеличиваете объем ОЗУ которое займете под этот пик и время, которое понадобиться на то, что бы разгрести эту ОЗУ.
    При этом я вижу что по дефолту в centos7 выставленны значения vm.dirty_background_ratio = 10 и vm.dirty_ratio = 30 (то есть 30% от всей доступной памяти можно занять под dirty page, запускать синхронизацию если зянято более 10%), vm.dirty_expire_centisecs = 3000 (сбрасывать на диск данные, которые находяться в dirty page больше 30 секунд вне зависимости от того, сколько в данный размер занято под dirty page) и vm.dirty_writeback_centisecs = 500 (синхронизатор должен просыпаться каждые 5 секунд для обработки данных, подподающих под vm.dirty_expire_centisecs).
    На ubuntu (16.04 и 18.04) vm.dirty_ratio = 20, все остальные параметры точно такие-же как у centos.

    Логика тут очень простая: под dirty page память не резервируется. Если она нужна и есть свободная память - она используется (максимум 30% или 20% от всей доступной). Причем доступная память, это не "всего установленно", это именно available память в выводе "free".
    То есть мы получаем "некую автоматическую балансировку" системы по данному параметру в зависимости от "Total RAM - Used RAM", чем доступной памяти больше, тем больше может быть dirty page. Если собираетесь ограничить dirty page в 2-4-8 мегабайт, то хотя бы проведите набор тестов под вашей боевой нагрузкой (не синтетической, а именно боевой) и убедитесь что это хотя-бы не сделает хуже (не снизит производительность). Мой опыт говорит что на моих нагрузках большинство серверов чувствуют себя отлично со значениями по умолчанию.
    Ответ написан
    6 комментариев
  • Как окрасить строку python кодами цветов майнкрафта?

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

    Это регулярное выражение: ^(.+)\.(\d+)\.(css|js)$

    ^ — начало строки
    ( ) — то, что внутри скобок, отдельно попадёт в переменные $1, $2, .. $N
    . — любой символ
    + — определяет количество предшесвтующего ему: «1 или несколько»
    .+ — один или несколько любых символов
    \. — буквально точка обыкновенная, point vulgaris, без спец. значения
    \d — цифра. \d+ одна или несколько цифр
    (css|js) – или "css" или "js"
    $ — конец строки

    Таким образом эта регулярка совпадёт, скажем, со строкой
    /css/main.min.682375227.css и заменит её строкой без числа:
    /css/main.min.css

    Наверное, так борются с кэшированием в браузере. В HTML можно писать с любым числом, и браузер подумает, что это что-то новое. А сервер всегда отдаст один и тот же main.min.css, какой там у него есть.
    Ответ написан
    1 комментарий
  • Есть конвертер с аиограм на телебот?

    deepblack
    @deepblack Куратор тега Python
    Есть конвертер с аиограм на телебот?

    Такой конвертер называется разработчиком.

    По теме вопроса:
    Открываете документацию в библиотеке, изучаете (параллельно стоит подтянуть Python), переписываете (можно и не переписывать, а продолжить писать уже со свежеосвоенной библиотекой)
    Ответ написан
    1 комментарий
  • Какой андроид браузер режет рекламу в ютубе?

    @sergiodev
    Советую установить NewPipe - https://newpipe.net/ - в нём нет рекламы.

    Хотя и некоторых фич YouTube нет, таких как чат в стримах и перемотка стрима назад. А в остальном - отличный клиент. И аккаунт YouTube не нужен. Сам им пользовался на старом планшете с KitKat.

    Ещё из минусов - иногда после очередного обновления сайта YouTube этот клиент может подглючивать, т.к. структура HTML меняется (насколько понял он парсит сайт ютуба), приходится обновлять его периодически.
    Ответ написан
    1 комментарий
  • Как называется данная программа?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Чей-то типичный курсач на делфи 7 по теме базы данных
    Ответ написан
    Комментировать
  • Команда для создания ключа и сразу закинуть ее на сервер?

    @Kostik_1993
    Web Developer
    Видимо ключ уже был создан. Для того что описали вы требуется не много
    Сперва сгенерирвовать ключ командой ssh-keygen. Это нужно сделать один раз если такого ключа еще не делали. Если он есть то уже не нужно делать
    Далее ssh-copy-id root@123.133.13.31 перенесет ваш ключ на сервер. После этого вы сможете подключаться без пароля командой ssh root@123.133.13.31
    Ответ написан
    3 комментария
  • Какие YouTube каналы по Линукс вы смотрите?

    BorLaze
    @BorLaze
    Java developer
    Радуюсь.

    Пока миллениалы учат линукс и программирование по видосикам, динозаврам типа меня всегда работа будет :-)))
    Ответ написан
    Комментировать
  • Какой роутер выбрать для дома?

    @antonwx
    Вам бы для начала продиагностировать проблему, прежде чем пытаться её решить. Временно подключите кабелем телевизор и посмотрите, уйдёт ли проблема. Если да, просканируйтe wi-fi пространство inssider-ом и попробуйте сменить канал на менее загруженный. Попробуйте временно роутер перенести к телевизору и посмотреть уйдёт ли проблема. Возможно проблема и не в роутере вовсе, а в сетевой карте телевизора, или в прошивке или же вообще в стриминговом сервисе.
    Ответ написан
    1 комментарий
  • Характеристика микроконтроллера. Что означает 32-разрядный? А если сказать 32-битный, это одно и тоже?

    15432
    @15432
    Системный программист ^_^
    Что означает 32 — разрядный
    Что микроконтроллер в своих машинных кодах может оперировать с 32-битными значениями. Размер регистров у него 32 бит.

    А если сказать 32 битный, это не одно ли и тоже?
    Да, одно и то же. 32 бита данных в один регистр помещается. 32 разряда в регистре.

    Память: 520 КБ памяти SRAM
    Внутри микроконтроллера встроена оперативная память типа SRAM объёмом 520 КБ

    Wi-Fi: 802.11 b / g / N, Bluetooth: v4.2 BR/EDR and BLE
    В чипе есть встроенный аппаратный модуль WiFi / BT, не нужно ничего дополнительного подключать для обеспечения беспроводной связи

    12-разрядный АЦП до 18 каналов
    Контроллер умеет измерять напряжение на своих 18 выводах с точностью до 12 бит, тем самым преобразуя аналоговый сигнал в цифровой

    2 × 8 бит ЦАПа
    Контроллер умеет формировать напряжение на двух своих выводах с точностью до 8 бит, тем самым создавая аналоговый сигнал
    Ответ написан
    25 комментариев
  • Как отформатировать глючащую SD карту памяти?

    eapeap
    @eapeap
    Сисадмин, Беларусь
    Карта выработала свой ресурс и перешла в режим "Только чтение"
    Скопировать с нее информацию, если нужна, и купить новую.
    Ответ написан
    1 комментарий
  • Cloudflare не справляется с ddos атакой, какие варианты?

    Jump
    @Jump
    Системный администратор со стажем.
    Cloudflare не справляется с ddos атакой, какие варианты?
    Ну главная задача сloudflare и подобных сервисов - не дать злоумышленникам положить канал до вас.

    Если канал работает, пакеты идут - значит прекрасно справляется.
    А то что процессор загружен на 100% это уж не к сloudflare, а к вашему админу.
    Почему определенный вид трафика кладет систему, почему этот трафик не фильтуете.
    Ответ написан
    2 комментария
  • На сколько подходит Intel NUC для программирования?

    @12rbah
    У кого есть опыт. Можете ли подсказать как оно?

    Есть, нормально тянет, но желательно проц брать i7 8 или 10 поколения (летом с 32 гб + ssd 500 стоил около 1к$ на али можно было купить аналоги за 700-800$, но я там не люблю брать электронику).
    И все это допустим- с оперативной памятью 8-16 гб.

    Конечно можете поставить туда 8-16гб, но я бы потратил лишние 5к рублей и поставил бы туда хотя бы 32, в общем без проблем тянет даже виртуалку в фоне. Если в общем это по производительности это ноутбук для задач, которые вы описали его хватит более чем.
    upd: в комментариях увидел, что вы рассматриваете варианты i3-i5. У i3 два ядра, скорее всего ему будет тяжеловато тащить несколько задач, у меня есть i5-3230m, с одной ide и парой программ он справляется еще, но если например я запускаю андроид студио и эмулятор, то ноут сильно тормозит. бенчмарк у i3 прирост производителности 40-70% показан в тестах, но я бы присмотрелся к процам помощнее.
    Ответ написан
    3 комментария
  • Если злоумышленникам известен IP, то Cloudflare не поможет?

    SagePtr
    @SagePtr
    Еда - это святое
    От слабых атак может и помочь, если будете отбрасывать все пакеты, кроме пришедших с cloudflare, но если забьют всю ширину сетевого канала входящими пакетами - то уже не поможет.
    Ответ написан
    4 комментария
  • Блокирую китайские ip, можно ли сразу блочить подсети 175.0.0.0/8 или там может попасться не только Китай?

    dyuriev
    @dyuriev
    A posteriori
    Сервер атакуют с кучи китайских, других азиатских ip.

    есть чудесные базы для вашей задачи:


    если атака брутфорсом sshd, то вовсе file2ban вам в помощь

    у интернет провайдеров в РФ встречаются ip которые определяются как Европейские и т.п.
    пруф?

    UPD рецепт для ленивых

    https://www.ip2location.com/free/visitor-blocker
    внизу на странице отличная форма
    выбираем страны которые хотим заблокировать, в Output format выбираем linux iptables, и жмем скачать
    Ответ написан
    2 комментария
  • Почему в файле auth.log множество попыток входа по SSH?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Это боты. Да раздражают. Я бы поставил вход только по сертификату, сменил бы порт ssh на 2022 и настроил fail2ban
    Ответ написан
    1 комментарий
  • Как сделать так чтобы два жестких диска не видели друг друга?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    трукрипт / веоакрипт

    или битлокер

    с разными пассами
    Ответ написан
    Комментировать