Ответы пользователя по тегу Linux
  • Почему не запускается приложение на linux alpine?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    пиши ldd seeker

    Скорее всего он не может найти необходимые динамические библиотеки, что покажет ldd (именно поэтому ругается на not found).
    Либо не подходит архитектура, либо не хватает каких-либо зависимостей, которые следует доустановить.
    Ответ написан
    Комментировать
  • Как добавить право записи для группы в Bash скрипте?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    /var/log может содержать логи с небезопасной информацией. Поэтому давать доступ группе надо только если все кто в группе доверенные лица.
    Или запускай скрипт от рута.
    Ответ написан
    Комментировать
  • Почему на хостинге у многих есть папка public_html и почему она так называется?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Даже по названию папки понятно откуда она так называется. public слово понятно, html понятно.
    Дефолтные настройки веб сервера для персональных страничек пользователей.
    При включении они доступны по адресу www.site/~username
    Ответ написан
    Комментировать
  • Какую выбрать систему мониторинга для работы за NAT для небольшого разношерстного парка?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    grafana. Обычно она уже идет с influxDB, можно метрики слать напрямую в influxDB через его АПИ
    Ответ написан
  • Как вырезать слова из вывода?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    у меня так сработало
    sshd -T | grep -oiP '[a-z0-9-.]*etm@[a-z0-9-.]*'
    Ответ написан
    Комментировать
  • Какая утилита подобна wget, но умеет делать upload дерева файлов по https?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    прикол в том, что http в принципе не знает что такое файловая система, поэтому нужно писать скрипт, который оббежит ваши каталоги и зааплоадит файлы по одному.
    Либо архивировать каталог и заливать уже архив со всем внутри, как это делают
    Ответ написан
    Комментировать
  • Context switch per second (Linux) 1.3млн это много или мало?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Нужно понимать как работает многозадачность и распределение процессорного времени по ядрам.
    В Линукс довольно сложно посчитать реальную занятость процессора.
    В сам свитчинг ничего упираться не может, точнее нет каких-то специальных лимитов. Это обычная процессорная занятость, относящаяся наверное к system cpu usage, но это неточно. Чем быстрее процессор, тем быстрее он может выполнять свитчинг и тем больше свитчингов в секунду может быть выполнено, это просто выполнение инструкций процессора вне рамках процессов, а внутри ядра системы, точнее process scheduler.

    Но проблема в том, как именно распределяется процессорное время. process scheduler в ядре линукса выделяет слайсы примерно по 10-15 милисекунд на процесс, потом переключает на другой. Для процессов, которые что-то активно вычисляют (например архивация), после анализа деятельности может быть выделен более длинный слайс или несколько подряд, то есть уменьшается свитчинг. При этом оценка времени, которая нужна на сам свитчинг - она довольно сложная, ведь для подсчета количество потраченного cpu нужно потратить cpu, и эти 10-15% может на самом деле не существовать.

    Если парралельных процессов очень много и все хотят что-то делать (чекнуть load average), то машина просто не успевает обработать их все, и тратить на переключение приличное количество ресурса, вместо того чтобы непосредственно выполнять код ваших программ.
    Таким образом какого-то определенного лимита на context switching нет, это просто еще одна метрика, которая может подсказать что слишком много одновременно запускаете, можно попробовать оптимизировать.

    Ну или просто не хватает CPU, а система ошибочно показывает свободные ресурсы, которых на самом деле нет.

    Линукс на самом деле не так уж детально может посчитать точное количество ресурсов. Там выполняется все очень просто - на входе в контекст засекается timestamp, на выходе из контекста засекается таймстамп, и потраченное время дописывается в метаданные процесса (для каждого ядра, если процесс многопоточный). Исторические значения не записываются, в метаданных процесса есть только вот это - сколько всего cpu usage с момента старта процесса.
    Если запустить какой-нить top, он будет каждые 1-2 секунды бегать по списку процессов, сравнивать этот параметр и показывать результат загруженности за последние 1-2 секунды, но вот уточнить процесс занял свои 25% cpu плавно в течение секунды, или он занимал 100% cpu первую четверть секунды или третью - вы уже не сможете.

    Ну и само ядро считает свои внутренние потоки так же само.
    И только активность самого process scheduler (то есть cpu затраченное на анализ и переключения процессов) не может быть красиво подсчитана.

    p.s. я не разработчик линукс, поэтому это мое IMHO основанное на наблюдениях и обзорных статьях о работе современного планировщика, если будут гуру которые меня поправят или подтвердят сказанное - будет круто.
    Ответ написан
    Комментировать
  • Можно ли записать данное sed выражение в одну строку?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Что-то непонятно у вас с текстом.
    Приведите несколько строк из файла с alb.ingress.kubernetes
    там перевода строк нет, или как?
    sed не умеет работать с мультистроковыми регулярками, он считывает текст построчно и затем сравнивает с паттерном, при этом в считанной строке символа перевода строки собственно даже и не будет.
    Можно попробовать работать с мультилайн через наполнение pattern space, правда там будет конструкция посложнее.

    Наверное проще, если вы нормально приведете пример вашего лога, и можно будет посмотреть как там зацепиться.
    Ответ написан
    Комментировать
  • Как в jq bash вывести только первое значение ключа из одного словаря?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    для валидного JSON (а ваш пример невалидный, плюс кавычка во втором айпишнике не закрыта", можно было бы заюзать так

    jq '[.[][][].addr]|.[1]'

    spoiler
    { "addresses" : {
    "Network hidden ab4252cc-8e5f-5d76-86e7-618f3f18ac48": [
    {
    "version": 4,
    "addr": "123.12.1.123"
    }
    ],
    "Network 4df4332c-6a52-43b3-bdf3-653d6b6764a4": [
    {
    "version": 4,
    "addr": "123.123.12.123"
    }
    ]
    }
    }
    Ответ написан
    Комментировать
  • Как запретить пользователю выполнять команды в Shell?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    1. поменять ему дефолтный шелл на /bin/nologin
    2. установить ftp сервер со своими настройками и пользователями, вместо линуксового логина
    Ответ написан
    Комментировать
  • Как отправить процесс в фон?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Здравствуйте.
    На Ubuntu server после ввода команды bg <номер процесса> ничего не происходит, просто возвращается строка на ввод.

    Так и должна просто возвращаться строка на ввод. Во первых если процесс уже был запущен и работал в фоне, то вы ничего не делаете. Если он был приостановлен, он просто должен перейти в running.
    Но для того, чтобы вам помочь, было бы неплохо чтобы вы привели лог своей консоли, как вы выполняете jobs, как вы указываете номер процесса. То есть выполнить jobs, bg номер, jobs

    При вводе команды bg <номер процесса> на экране начинает отображается вывод этого процесса, при этом окно терминала наглухо зависает и я ничего не могу сделать, даже остановить процесс (ctr+C)

    Как докажете что окно терминала именно зависает?
    для начала, если вы запустили процесс в фоновом режиме, то Ctrl+C естественно не может его остановить. Он же в фоне выполняется. Скорее всего вы не понимаете, что вам доступен терминал, в котором вы можете вводить другие команды.
    Фоновый процесс просто может писать текст в терминал.
    Напишите вслепую clear, например, проверьте что экран очистился ненадолго.
    И запускать процессы в фон, которые шлют много текста в терминал - в общем случае бессмысленно
    Ответ написан
    Комментировать
  • Как автоматически проставлять группу пользователя при создании файла через winscp?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Тут системно надо подходить к вопросу. Много неясностей.

    1. Если все пользователи пишут в одну и ту же папку (типа upload), можно просто проставить SUID и SGID флаги на папку, и все файлы в ней будут создаваться от юзера/группы владельца upload/

    2. Также почему все кидают файлы от своего имени? Можно сделать специального пользователя, попросить всех юзеров сгенерировать ssh ключи и добавить в этого пользователя. Каждый будет логиниться со своим ssh ключом, но юзер будет один и тот же

    3. Добавить всех пользователей в одну группу и проверить чтобы umask был 0002
    Ответ написан
    Комментировать
  • Ошибка в задаче bash при изменении оболочек юзеров из файла. Как исправить?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Если у вас такая задача, то она непонятно чему учит.
    Слишком ненужные и длинные цепочки
    Итак.

    1. sed умеет сам открывать файлы. то есть вместо cat users.txt | sed можно просто sed users.txt
    2. учитесь смотреть промежуточные значения, тот же ваш $line перед выполнением
    3. Учитесь пользоваться sed без -i и смотреть промежуточный результат перед тем как он полезет в файл.
    4. Что у вас с кавычками?
    /^" $line ":/ это что?
    вы пытаетесь пользоваться регулярками без понимания что это такое?
    Вы вообще не понимаете как хотя бы одну строчку изменить через sed?

    Тут даже чинить нечего, в строчке с sed все неверно.

    for user in $(grep -vP "^(/s)*#" users.txt)
    do
       sudo sed -ir $user "/^$user:/s/\\bin\\sh/\\bin\\bash/" /etc/passwd
    done
    Ответ написан
    2 комментария
  • Какая файловая система наиболее устойчива к сбоям?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    все очень просто.
    1. Бэкапы.
    2. УПС.

    И не искать себе выдуманное решение с файловыми системами.
    * Файловые системы не заботятся о пользовательских данных.
    * Целостность файловой системы это о том, что структура будет целая, то есть два файла не занимают один кластер, нет незавершенных операций, когда что-то недописано, или какой-то кластер считается занятым, а на самом деле нет и уже неконсистентность.
    * Эти проблемы решаются простым способом - все что криво удалить, и все. Не восстановить.
    * Второй момент - софт может просто записать кривые данные, и тут как бы от файловой системы не зависит. Вплоть до какого-нить криптера, который сделает совершенно корректные файловые операции и все пошифрует.
    * Если же глючит хард, то там все еще хуже.

    Поэтому вместо поиска велосипедов на низкоуровневых проблемах, просто делайте регулярные бэкапы, и если что-то подобное случится, то да, пользователь потеряет часть работы, от последнего бэкапа.
    Бэкапы хранить на отдельной машине, доступ к ним ограничить отдельным паролем, на машину УПС, можно еще и рейд.
    Ответ написан
  • Как помигать светодиодом на Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Смотря что за устройство. 99% что прямого управления этим диодом вообще нет.
    Вдобавок оно вообще может быть никак не управляться софтварно, только напрямую из прошивки устройства без возможности мигать им кастомным образом
    Ответ написан
    Комментировать
  • Как написать bash мониторинг файловой системы EXT4?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    16 tb это довольно большой размер. Не так часто файлы его достигают.
    Я бы разбил мониторинг на две части.

    Первая часть - find всех файлов которые больше 10 tb, например, и занесение их в базу. Раз в сутки, например.
    Вторая - stat по файлам из базы, выбрать частоту, которая устраивает.

    Базой может быть банально текстовый csv файл с timestamp, absolute path, size с каким-то разделителем.
    Или, например, influxdb с графаной.. на выбор

    Короче главная идея - разделить поиск в принципе больших файлов и более детальный и частый мониторинг когда они пересекут нужный размер.
    Ответ написан
    Комментировать
  • Как скопировать rsa ключ на другой линукс сервер?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    руками залогинься на сервер и закинь публичный ключ в ~/.ssh/authorized_keys

    еще почитай про файл ~/.ssh/config
    там можно настроить все опции для ssh подключений независимо от команды
    Ответ написан
    Комментировать
  • Как сравнить имя имеющихся директорий и создать новую?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Адаптируй эту команду.
    mkdir "folder$(( $(ls -1d ./folder* 2>/dev/null |wc -l) + 1 ))"


    Или эта понадежнее будет:
    mkdir "folder$(( $(ls -1d folder* | cut -c 7- | sort -n | tail -n1) + 1))"
    Ответ написан
    Комментировать
  • Копирование корневого каталога копирует и разделы диска тоже?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    нет конечно. Корневой каталог находится внутри конкретного раздела, а не над ними.
    Ответ написан
    Комментировать
  • Есть ли необходимость или очевидные плюсы перехода на linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Работать нужно теми инструментами, которые удобны.
    В Линукс очень удобно запускать и выполнять код, который предназначен для линукса.
    Если ваш "продакшен" работает в Линукс, то удобнее было бы и локально сделать себе Линукс. Но не факт что вам будет удобно именно писать код в Линуксе.

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

    В общем хорошо иметь под рукой Линукс, если код в продакшене работает на Линукс.
    Ответ написан
    6 комментариев